Android Activity返回导航循环循环问题

时间:2016-05-24 07:04:35

标签: android android-activity recursion

我有三个活动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();
}

enter image description here

3 个答案:

答案 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 CActivity B的多个实例。这不应该发生。每个activity应该只有一个实例。您需要适当地调用finish()方法。 startActivity()而不是致电startActivityForResult(),而是轻松完成。

答案 2 :(得分:0)

您可以做的是覆盖您的活动的onBackPressed功能,如下所示:

活动B的

    @Override
    public void onBackPressed() {
        //start activity A
    }

表示活动C:

    @Override
    public void onBackPressed() {
        //start activity B
    }