假设我有3项活动:A,B和C.
我想要的流程如下:
我的第一次尝试:(由于我不想在B之后看到A,即使是几毫秒)也失败了
finish()
。 (onActivityResult)我的第二次尝试:(成功但我认为尽管如此,还有更好的方法吗?)
finish()
。 (startActivity)问题:
是否有任何替代方式(更简单/更直接)定义导航流的序列,就像taskBuilder
使用nextIntent()
API一样?
答案 0 :(得分:2)
如果我理解正确,你只是想让用户无法使用后退按钮进入已经“用完”的活动,是吗?尝试使用以下内容修改AndroidManifest.xml中的活动标记:
<activity
android:name="yourpackagename.yourappname.YourActivity"
android:label="@string/your_app_title"
android:noHistory="true" >
添加noHistory
属性后,相关活动会从活动历史记录中删除,您将能够强制您的用户按照您的意图描述的方式前进。
答案 1 :(得分:2)
在后退按钮上的活动C中,按清除后挡板并导航到A
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
onBackPressed();
}
return super.onKeyDown(keyCode, event);
}
public void onBackPressed() {
Intent myIntent = new Intent(C.this,A.class);
myIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);// clear the backstack
startActivity(myIntent);
finish();
return;
}
A到B到C
在您的活动后台堆叠中,您将在顶部,下一个B和下一个A。
当您按下C中的后退按钮时,活动C将从堆栈中弹出,销毁,之前的活动B将获得焦点。因此,如果您希望从C导航到A,请清除后台堆栈,导航到A并完成当前活动。