[解決済み] AndroidフラグメントのgetIntent().getExtras()はどこで、どのように使うのですか?重複
質問
アクティビティでは、以前はこうしていました。
アクティビティ1では
Intent i = new Intent(getApplicationContext(), MyFragmentActivity.class);
i.putExtra("name", items.get(arg2));
i.putExtra("category", Category);
startActivity(i);
アクティビティ2にて。
Item = getIntent().getExtras().getString("name");
Fragmentsを使ってどのように行うのですか? 互換ライブラリv4も使っているのですが。
FragmentActivityの中に入れるのでしょうか? それとも実際のフラグメントですか? また、どのメソッドに入りますか? onCreateですか? onCreateViewですか? 他のメソッドですか?
また、サンプルコードを見ることができますか?
EDIT: アクティビティ1をアクティビティ(または実際にクリックされたときにリストアイテムの意図を渡すListActivity)として維持し、次にタブ付きフラグメントのセット(フラグメントアクティビティを通して)に渡そうとしていることに注目する価値があります。(これが可能であることを望みます?)
どのように解決するのですか?
私がよくやることで、これは Google が開発者に意図したことでもあると思いますが、余分なものを得るために
Intent
で
Activity
を作成し、引数でインスタンス化することにより、余分なデータをフラグメントに渡します。
実際にあるのは
の例です。
があります。また、いくつかの API デモでもこの例を見ることができます。この具体例は API 3.0+ のフラグメントに対して与えられていますが、同じフローが
FragmentActivity
と
Fragment
をサポートライブラリから取得します。
まず、アクティビティで通常通りインテントのエキストラを取得し、フラグメントの引数として渡します。
public static class DetailsActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// (omitted some other stuff)
if (savedInstanceState == null) {
// During initial setup, plug in the details fragment.
DetailsFragment details = new DetailsFragment();
details.setArguments(getIntent().getExtras());
getSupportFragmentManager().beginTransaction().add(
android.R.id.content, details).commit();
}
}
}
コンストラクタを直接呼び出す代わりに、引数をフラグメントに埋め込んでくれる静的メソッドを使用する方が簡単でしょう。そのようなメソッドは、しばしば
newInstance
の中にあります。
の例では、Google が提供する
. 実際にあるのは
newInstance
メソッドに
DetailsFragment
というメソッドがあり、上のスニペットではなぜ使われていないのか不明です...。
とにかく、フラグメントを作成するときに引数として提供されたすべてのエクストラは、次のように呼び出すことで利用可能になります。
getArguments()
. これは
Bundle
を返すので、その使い方は
Activity
.
public static class DetailsFragment extends Fragment {
/**
* Create a new instance of DetailsFragment, initialized to
* show the text at 'index'.
*/
public static DetailsFragment newInstance(int index) {
DetailsFragment f = new DetailsFragment();
// Supply index input as an argument.
Bundle args = new Bundle();
args.putInt("index", index);
f.setArguments(args);
return f;
}
public int getShownIndex() {
return getArguments().getInt("index", 0);
}
// (other stuff omitted)
}
関連
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] Androidでアクティビティ起動時にEditTextにフォーカスが当たらないようにする方法
-
[解決済み] インスタンス状態の保存を使用してアクティビティ状態を保存するにはどうすればよいですか?
-
[解決済み] Androidアプリケーションのアクティビティ間でデータを受け渡すにはどうすればよいですか?
-
[解決済み] AndroidでstartActivityForResultを管理する方法
-
[解決済み] FragmentでonActivityResultが呼び出されない
-
[解決済み] ViewPagerとフラグメント - フラグメントの状態を保存する正しい方法は何ですか?
-
[解決済み】Android UserManager.isUserAGoat()の正しい使用例?)
-
[解決済み] BottomSheetDialogFragmentの状態をexpandedに設定する。
-
[解決済み] ArrayList<MyCustomClass>をJSONArrayに変換する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 設定ページに移動せずに位置情報サービスをオンにする
-
[解決済み] AndroidにおけるViewPager2の適切な実装
-
[解決済み] 深くネストされたスタックから離れるとき、Fragmentのバックスタックをクリーンアップする方法はこれで良いのでしょうか?
-
[解決済み] Eclipseでのandroid:configChangesでのAdmobエラー
-
[解決済み] AndroidでラジオボタンにOnClickListenerを設定するには?
-
[解決済み] EditTextをReadOnlyにする
-
[解決済み] AsyncTaskLoaderとAsyncTaskの比較
-
[解決済み] FABアイコンの色を設定する
-
[解決済み] Android APKファイルの中身を見るには?
-
[解決済み] LayoutParamsの高さを密度に依存しないピクセル数でプログラム的に設定する。