는이 같은 탭을 보여주는 활동 (Main
)가 Main
에는 MyGroup
의 탭이 있습니다. MyGroup
은 ActivityA
으로 시작하고 ActivityB
으로갑니다. ActivityB
에서 뒤로 버튼을 누르면 ActivityA
으로 돌아가고 ActivityA
의 뒤에서 내가 앱을 닫고 싶습니다.뒤로 버튼 동작 및 ActivityGroup
이렇게 해보았습니다. ActivityB
에서 : ActivityA
에서
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
System.out.println("ActivityB PRESSED");
if (keyCode == KeyEvent.KEYCODE_BACK) {
MyGroup mg = (MyGroup) getParent();
return mg.onKeyDown(keyCode, event);
}
return super.onKeyDown(keyCode, event);
}
같은 : Main
에 마지막으로
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
System.out.println("MG PRESSED");
if (state == A)
return false;
else if (state == B) {
setContentView(getLocalActivityManager().startActivity("activityA", new Intent(this, ActivityA.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)).getDecorView());
state = A;
return true;
}
return false;
}
return super.onKeyDown(keyCode, event);
}
, 단지 System.out에 : MyGroup
에서 지금
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
System.out.println("ActivityA PRESSED");
if (keyCode == KeyEvent.KEYCODE_BACK) {
MyGroup mg = (MyGroup) getParent();
return mg.onKeyDown(keyCode, event);
}
return super.onKeyDown(keyCode, event);
}
,
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
System.out.println("MAIN PRESSED");
return super.onKeyDown(keyCode, event);
}
이제는 이것이 내가 원하지 않는 현재 행동입니다.
- 앱이 시작되면 ActivityA에 있습니다. Backbutton -> 앱이 닫힙니다. 승인.
- 앱이 시작되면 ActivityA -> ActivityB -> 뒤로 버튼 -> ActivityA가 표시됩니다. 승인.
- 앱이 시작되면 ActivityA -> ActivityB -> Back -> ActivityA -> ActivityB -> Back -> 앱이 닫힙니다. 안돼!
명백하게, 제 2 시간 ActivityB 도시되어 뒤로 버튼 대신 ActivityB
또는 MyGroup
의, Main
의해 처리되고있다.
어떻게 해결할 수 있습니까?
편집
나는 ActivityC을 추가했습니다. 첫 번째 두 가지 활동에서의 행동이 정상적인 것처럼 보이고 세 번째부터는 Main
활동이 버튼을 누르는 것으로 처리됩니다. > B - -> A A에 의해 처리된다 -가되도록
은> B -> 메인
및 A -> B -> B - -> 메인> C는 처리된다.
나 :
지금이 문제를 해결하기 위해,이에 XML을 변경했습니다. – nhaarman