我有三个活动A,B,C。 A是父活动。导航应该是A ---> B ---> C ---> B ---- C ---> B(它是B和C的循环)。 我面临的问题是在后面的导航中,应该如图所示。 从B回来应该总是回到父A并且从C返回应该总是回到B.但是有时B回到C,这导致B和C之间的递归循环。任何人都可以帮助我吗? 这是我尝试过的:
ACTIVITY A
Intent intent = new Intent(A.this,B.class);
intent.putExtra("A",true);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
ACTIVITY B
Intent intent = new Intent(B.this, C.class);
intent.putExtra("A",true);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.setFlags( Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
finish();
OnBackpressed B
Intent intent = new Intent(B.this, A.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
finish();
ACTIVITY C
Intent intent = new Intent(C.this, B.class);
intent.putExtra("A",A);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
finish();
OnBackpressed C
if(A){
Intent iu= new Intent(C.this,B.class);
iu.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
iu.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(iu);
finish();
}
答案 0 :(得分:1)
1 - 从A到B而不使用finish()
2-Go from B to c without using finish()
3-Go from c to B using finish() in
@Override
public void onBackPressed() {
finish();
}
4-Go from B to A using finish() in
@Override
public void onBackPressed() {
finish();
}
答案 1 :(得分:1)
您正在创建Activity C
和Activity B
的多个实例。这不应该发生。每个activity
应该只有一个实例。您需要适当地调用finish()
方法。
startActivityForResult()
,而是轻松完成。
答案 2 :(得分:0)
您可以做的是覆盖您的活动的onBackPressed
功能,如下所示:
:
@Override
public void onBackPressed() {
//start activity A
}
表示活动C:
@Override
public void onBackPressed() {
//start activity B
}