행동의 경우, 흐름 샘플 응용 프로그램의 MainActivity는 다음과 같습니다
public boolean onCreateOptionsMenu(Menu menu) {
...
Object screen = AppFlow.get(this).getBackstack().current().getScreen();
...
public void go(Backstack nextBackstack, Flow.Direction direction, Flow.Callback callback)
Screen screen = (Screen) nextBackstack.current().getScreen();
...
두 가지 방법이 표시 될 화면의 알고 있습니다. 액션은 go()의 제목 인 onCreateOptionsMenu()에 정의됩니다. 문제는이 모든 것이 MainActivity에 위치한다는 것입니다.
public boolean onCreateOptionsMenu(Menu menu);
그리고 방법과 TitleEnabledScreen 인터페이스 :
이
public void getTitle();
귀하의 활동이 다음과 같을 것이다
은 당신이 할 수있는 것은 방법으로 ActionEnabledScreen 인터페이스를 만드는 것입니다 :
public boolean onCreateOptionsMenu(Menu menu) {
...
Object screen = AppFlow.get(this).getBackstack().current().getScreen();
if (screen instanceof ActionEnabledScreen) {
return ((ActionEnabledScreen)screen).onCreateOptionsMenu(menu);
}
...
public void go(Backstack nextBackstack, Flow.Direction direction, Flow.Callback callback)
Screen screen = (Screen) nextBackstack.current().getScreen();
if (screen instanceof TitleEnabledScreen) {
setTitle(((TitleEnabledScreen)screen).getTitle());
}
...
위의 코드를 실행하지 않았으므로 컴파일되지 않았을 수도 있지만 아이디어가 표시되기를 바랍니다. 목표는 새 스크린을 구현할 때 MainActivity가 선형 적으로 확장되는 것을 방지하고 화면 클래스를 직접 참조해야하는 번거 로움을 피하는 것입니다.
희망이 도움이됩니다.
아, 물론 맞춤 제목을 제공하려는 화면은 TitleEnabledScreen을 구현합니다. 사용자 정의 액션을 제공하려는 스크린은 ActionEnabledScreen을 구현합니다. 되돌아 갈 때 (즉, TitleEnabledScreen을 구현하는 마지막 화면에 대한 백 스택 검색) 문제를 피하기 위해 제목 부분에 더 많은 백 스택 작업이 필요할 수 있습니다. – mrlem