我正在编写一个Android 4.X应用程序。
大多数活动都是在树结构中工作的(因此堆栈非常适合它们),"back"也可以按预期工作。
我的活动设计中有一个循环
-> list messages -> view message -> ack -> reply -
| |
--------------------------------------------------
这将在堆栈上累积活动。
如何完成回复本身以及堆栈中的"ack"one_answers"view message"活动,而不是创建新的"list message"活动?
这是解决安卓应用程序中导航循环的正确方法吗?
您可以启动ActivityForResult(意向);在ActivityResult()上,你可以做一些事情。
这里有一个代码示例供任何需要它的人使用…
列表消息
public void next() {
Intent intent = new Intent(getApplicationContext(), ViewMessages.class);
startActivity(intent);
}
查看消息
public void next() {
Intent intent = new Intent(getApplicationContext(), AckMessage.class);
startActivityForResult(intent, 0);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode != Activity.RESULT_OK) return;
finish();
}
AckMessage
public void next() {
Intent intent = new Intent(getApplicationContext(), ReplyMessage.class);
startActivityForResult(intent, 0);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode != Activity.RESULT_OK) return;
setResult(Activity.RESULT_OK);
finish();
}
回复消息
public void complete() {
setResult(Activity.RESULT_OK);
finish();
}
我想我有另一个简单的解决方案来解决你的问题。从循环中的最后一个活动开始。你可以用那些标志开始第一个活动:
Intent intent = new Intent(LastActivity.this, FirstActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
它将从堆栈中删除FirstActivity之上的所有活动。并且onNewIntent()方法将在FirstActivity中调用。
您可以在此处查看更多信息