0

愚問で申し訳ありませんが、二つ質問させていただきたいのですが、関連があります。

Google でドキュメントを読んだ後: http://developer.android.com/training/implementing-navigation/ancestral.html 私はまだ何かを理解していません。

Up または (Home) ボタンを処理して、1 つのレベルの親画面に移動したい:

コード a:

Intent upIntent = new Intent(this, MyParentActivity.class);
NavUtils.navigateUpTo(this, upIntent);
return true;

そしてコードb:

Intent parentActivityIntent = new Intent(this, MyParentActivity.class);
parentActivityIntent.addFlags(
        Intent.FLAG_ACTIVITY_CLEAR_TOP |
        Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(parentActivityIntent);
finish();
return true;

どちらのコードも onOptionsItemSelected(MenuItem item) イベント ハンドラーに配置されます。

それについての違いは何ですか?

私の2番目の質問は、実際には次のような状況でナビゲートしたいということです:a)メニュー画面があり、それがメイン画面だとしましょう。b) メニュー画面からフォーム画面に移動して、ユーザーから情報を取得できます。c) メニュー画面からレポート画面に移動して、ユーザーにレポートを表示することもできます。

ユーザーがフォーム画面を完成させた後、画面をレポート画面に直接移動したいのですが、メニュー画面が表示されたくないので、それを経由する必要があります。

ラテラル ナビゲーションの場合のようなものですが、よくわかりません。

誰かが助けてくれることを願っています。どうもありがとうございました。

4

1 に答える 1

0

2 つのスニペットの違いは、フラグによって定義される動作にあります。

ドキュメントから:

FLAG_ACTIVITY_CLEAR_TOP:
設定されていて、起動されているアクティビティが現在のタスクで既に実行されている場合、そのアクティビティの新しいインスタンスを起動する代わりに、その上にある他のすべてのアクティビティが閉じられ、このインテントが (今一番上)新しいインテントとしての古いアクティビティ。

FLAG_ACTIVITY_NEW_TASK
設定されている場合、このアクティビティは、この履歴スタックの新しいタスクの開始になります。

NavUtils は、さまざまなバージョンの Android で人々が期待するものと一致する方法でホーム ボタンを簡単に実装できるように設計されたラッパーです。ソースを見ると、ジェリービーン以前のデバイスでは FLAG_ACTIVITY_CLEAR_TOP フラグが使用されますが、FLAG_ACTIVITY_NEW_TASK フラグは使用されません。Jellybean デバイスでは、どちらのフラグも使用しません。

2 番目の質問 (フォームからレポート アクティビティに直接移動) については、ユーザーがフォーム アクティビティでフォームを使用し終わったら、レポート アクティビティへのインテントを作成し、startActivity を呼び出します。家での活動に戻る理由はありません。

于 2012-12-18T21:16:14.263 に答える