Android活动导航循环



我正在编写一个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中调用。

您可以在此处查看更多信息

最新更新