正确恢复活动

时间:2014-10-19 10:37:36

标签: android android-activity

我有这样的活动序列:

A => B => C => D => E

E活动的按钮上,我正在恢复C。在我点击back中的C按钮后,它会返回E而不是B

我希望C => B =>恢复A活动后,back按钮点击C序列。

我该怎么做?

3 个答案:

答案 0 :(得分:2)

通过在意图中提供FLAG_ACTIVITY_CLEAR_TOP来启动活动C。关闭位于C顶部的所有活动后,C活动将开始。

Intent ci = new Intent(this,C.class);
ci.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(ci);

启动C时使用的标志:

FLAG_ACTIVITY_CLEAR_TOP: A - B - C - D - E A - B - { {1}}。

FLAG_ACTIVITY_REORDER_TO_FRONT : C - A - B - C - D E - A - { {1}} - B - D

答案 1 :(得分:2)

所有活动都是如此,只需按下后退按钮 -

即可

来自C -

 backButtonC.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            Intent intent = new Intent(C.this, B.class);
            //extras
            C.this.startActivity(intent);
        }
    });

来自B -

 backButtonB.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            Intent intent = new Intent(B.this, A.class);
            //extras
            B.this.startActivity(intent);
        }
    });

答案 2 :(得分:0)

onBackPressed()方法定义按下后退按钮时发生的操作。因此,基本上如果您在onBackPressed()中完成活动,则活动将从活动堆栈中删除。您可以从onBackPressed()显式调用Activity C中的Activity B.

public void onBackPressed() {

super.onBackPressed();
Intent i=new Intent(this,B.class)
startActivity(i);

}

同样,从B开始A并在A完成。