0

我正在编写一个 Android 4.X 应用程序。

大多数活动都以树结构工作(因此堆栈非常适合它们)并且“返回”按预期工作。

我的活动设计中有一个循环

 -> list messages -> view message -> ack -> reply -
|                                                  |
 --------------------------------------------------

这将在堆栈上累积活动。

如何完成回复杀死自己以及堆栈中的“确认”和“查看消息”活动,而不是创建新的“列表消息”活动?

这是解决 Android 应用程序中导航循环的正确方法吗?

4

3 回答 3

1

你可以做 startActivityForResult(Intent intent); 和 onActivityResult() 你可以做一些事情。

于 2013-07-17T09:09:28.427 回答
0

我想我有另一个简单的解决方案来解决您的问题。从您在循环中的最后一个活动开始。您可以使用 flags 开始第一个活动:

Intent intent = new Intent(LastActivity.this, FirstActivity.class);
                                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                                intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);

它将从堆栈中删除 FirstActivity 之上的所有活动。在 FirstActivity 中会调用 onNewIntent() 方法。

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

于 2014-11-17T02:18:02.763 回答
0

这是任何需要它的人的代码示例...

列表消息

    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();
    }

确认消息

    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();
    }
于 2014-11-17T01:44:17.007 回答