我有这样的活动序列:
A
=> B
=> C
=> D
=> E
在E
活动的按钮上,我正在恢复C
。在我点击back
中的C
按钮后,它会返回E
而不是B
。
我希望C
=> B
=>恢复A
活动后,back
按钮点击C
序列。
我该怎么做?
答案 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完成。