12

ActionBar の [上へ] ボタンを使用して、アプリにナビゲーション パターンを実装したいと考えています。

詳細アクティビティがあります。ここでは、ホーム、お気に入り、検索画面からアクセスできます。また、ブラウザからこの画面を開くこともできます(特定のURLを処理します)。ユーザーが Up ボタンを押すと、flush() メソッドを使用して戻るナビゲーションをエミュレートします。しかし、ユーザーがブラウザから来たときに、以前のブラウザのアクティビティの代わりにホーム画面を開きたいです。以前のアクティビティが別のアプリからのものであることを認識し、ホーム画面に移動するにはどうすればよいですか?

4

1 に答える 1

20

Up は常にアクティビティの階層的な親に移動し、Back は常に一時的に移動する必要があります。

つまり、Back はそのままにしておく必要があります。

アップに関しては、どこから来たとしても常に同じ場所に行くべきです。したがって、通常、YourListActivity から DetailsActivity にアクセスする場合、どこから来たかに関係なく、Up は常にそこに移動する必要があります。どの場所が最も可能性が高いかはあなたの裁量次第ですが、常に同じである必要があります。

通常ではない場所 (ブラウザ、別のアクティビティ、ウィジェット、または通知など) から詳細アクティビティにアクセスした場合は、タスク スタックを再作成して、上を使用したナビゲーションが同じパスになるようにする必要があります。Android デベロッパー トレーニングの例を次に示します。

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case android.R.id.home:
        Intent upIntent = new Intent(this, YourListActivity.class);
        if (NavUtils.shouldUpRecreateTask(this, upIntent)) {
            // This activity is not part of the application's task, so
            // create a new task
            // with a synthesized back stack.
            TaskStackBuilder
                    .from(this)
                    .addNextIntent(new Intent(this, HomeActivity.class))
                    .addNextIntent(upIntent).startActivities();
            finish();
        } else {
            // This activity is part of the application's task, so simply
            // navigate up to the hierarchical parent activity.
            NavUtils.navigateUpTo(this, upIntent);
        }
        return true;
    }
}

ナビゲーションの実装に関する Android トレーニングは次のとおりです。

( http://developer.android.com/training/implementing-navigation/index.html )。

NavUtils と TaskStackBuilder のサポート ライブラリが必要になります。

于 2012-08-03T02:39:26.863 に答える