Riz*_*van 5 java stack android
我一直在研究Android Native App,我想做的是:
Activities - A -> B -> C Then A-> B -> C -> C .
Run Code Online (Sandbox Code Playgroud)
从C活动,如果它再次指向C,那么我想手动从堆栈中删除C,B.在我的背上它应该只移动到A.
我试过finish(),但问题是:
Activities - A -> B -> C Then A-> B -> C -> C on finish A -> B -> C required state A-> C .
Run Code Online (Sandbox Code Playgroud)
有谁知道如何捕获堆栈中的所有活动并从堆栈中删除特定的活动?
在Activity C中,覆盖onBackPressed并添加如下内容:
@Override
public void onBackPressed() {
if (shouldGoBackToA) { // There are various ways this could be set
Intent intent = new Intent(this, AActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
} else {
finish();
}
}
Run Code Online (Sandbox Code Playgroud)
FLAG_ACTIVITY_CLEAR_TOP将导致它从堆栈下移到A Activity的现有副本而不是开始新的副本. 来自文档:
public static final int FLAG_ACTIVITY_CLEAR_TOP
如果设置,并且正在启动的活动已在当前任务中运行,则不会启动该活动的新实例,而是将关闭其上的所有其他活动,并且此Intent将被传递到(现在在最前面)作为新意图的旧活动.
小智 0
在调用 Intent 时,会传递一个名为 actvity clear top 的标志,如下所示:
Intent newIntent=new Intent(this,MainActivity.class);
newIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(newIntent);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
702 次 |
| 最近记录: |