だから私はフラグメントでいくつかの経験を得ようとしていますが、いくつかの障害を見つけています。
私の現在の状況は以下の通りです。
「呼び出し」アクティビティから送信された Extra Intent パラメータによって内容が決定されるリストを表示するアクティビティがあります。
この List アクティビティは、次のように XML で宣言された ListFragment を使用します。
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" android:background="@color/black">
<fragment class="com.pixlworks.NLC.DirectoryBrowse$ListingFragment"
android:id="@+id/listing"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</FrameLayout>
現在、アクティビティ インテント (または利用可能な場合は保存されたバンドル) の追加データにアクセスすることにより、フラグメント内のコンテンツのタイプを直接示すパラメーターを取得します。
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if (savedInstanceState != null)
mListingType = savedInstanceState.getString(Utils.DIRECTORY_TYPE_STORE_KEY);
else
mListingType = getActivity().getIntent().getStringExtra(Utils.DIRECTORY_TYPE_STORE_KEY);
// get content by type, create and set the adapter
}
今私の問題の一部は、これがそのパラメーターをアクティビティからフラグメントに「渡す」正しい方法であるかどうかわからないことです。
その上、アクション バーの UP ナビゲーションを使用すると、このセットアップで問題が発生します。このリスト アクティビティのアイテムをクリックすると、選択したアイテムの詳細を表示する別のアクティビティに移動します。この詳細アクティビティから:
戻るボタンを使用すると、通常どおりリスト アクティビティがスタックから戻され、すべて正常に動作します。
ActionBar の UP を使用すると (次の手順にもかかわらず)、スタック内のインスタンスを使用する代わりに新しいインスタンスが作成され、この新しいインスタンスは明らかにインテントで Extra パラメータを取得していないように見えます。保存されたバンドルまたはインテントに値が存在することを期待しているため、この状況でアプリがクラッシュします。
要約すると、これらのどれに従うべきか、「UP」ナビゲーションで適切に機能させる方法がわかりません。
A) アクティビティのフィールドに「type」パラメーターを保持し、それをアクティビティの Bundle onSaveInstanceState に保存します。その場合、値をフラグメントに渡す方法がわかりません。この場合、UP がアクティビティ リストの既存のインスタンスを呼び出すことを確認する必要があります。
B) アクティビティではなくフラグメントに値を保存する現在の設定を続行しますが、UP ナビゲーションを正しく処理するにはどうすればよいですか?
ここで同時に複数のことを尋ねていることは承知していますが、それらはすべて関連しているので、これについて何らかの助けが得られることを願っています.
事前に助けてくれてありがとう!