0

Android 4.X アプリを作成しています。

ほとんどのアクティビティはツリー構造で動作し (スタックはそれらに最適です)、「戻る」は期待どおりに動作します。

アクティビティの設計にループがあります

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

これにより、アクティビティがスタックに蓄積されます。

新しい「メッセージのリスト」アクティビティを作成する代わりに、スタックからの「ack」アクティビティと「メッセージの表示」アクティビティを終了させて​​、応答を終了させるにはどうすればよいですか?

これは Android アプリのナビゲーション ループを解決する正しい方法ですか?

4

3 に答える 3

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 に答える
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 に答える