[Android/Java] Jetpack Navigation 画面遷移とFragment間のデータ受け渡し
Android Studio 4.1.3(windows版) での流れとなります
以下の記事のプロジェクトベースでの説明となります
Android DeveloperのJetpack Navigationの画面遷移とFragment間のデータ受け渡しの説明は以下です
SafeArgs を追加する
※ 現時点ではandroidx.navigation:navigation-safe-args-gradle-pluginをimplementationでは動作しないようです
※ androidx.navigationのバージョンに合わせて設定してください
buildscript {
dependencies {
def nav_version = "2.3.4"
classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version"
}
}
apply plugin: "androidx.navigation.safeargs"
画面遷移の準備
+ボタンを押してここではNextFragmentを追加します
MainFragmentのActionsの+ボタンを押して画面遷移を追加します
DestinationでnextFragmentを指定してAddボタンで追加します
Actionが追加されました
MainFragmentに画面遷移実行用のボタンとボタンイベントを追加します
ボタンイベントの設定方法を詳しく知りたい場合は以下を参考にしてください
ここではMainFragmentにonClickButtonメソッドを追加しJetpack Databindingでボタンイベントの紐づけをします
画面遷移処理の実装
public void onClickButton() {
final View view = binding.getRoot();
// MainFragmentDirectionsはsafeargsを有効にすることで自動生成されます
NavDirections directions = MainFragmentDirections.actionMainFragmentToNextFragment();
Navigation.findNavController(view).navigate(directions);
}
Fragment間でデータを受け渡す場合
NextFragmentのArgumentsの+ボタンを押します
ここではName:Text Type:String とします
Action(やじるし)のArgument Default Values のdefault value に値を設定します
ここではnoneを設定 ※default valueを設定しないとActionクラスが自動生成されません
NextFragmentに渡したい値(ここでは"xxx")をsetします
public void onClickButton() {
final View view = binding.getRoot();
// MainFragmentDirections.ActionMainFragmentToNextFragment/setText()は自動生成されます
MainFragmentDirections.ActionMainFragmentToNextFragment action = MainFragmentDirections.actionMainFragmentToNextFragment();
action.setText("xxx");
Navigation.findNavController(view).navigate(action);
}
値を受け取ります
※ ここでは説明を簡略化してますが、実際はJetpack View/DataBindingを使用して値を設定してください
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final View view = inflater.inflate(R.layout.next_fragment, container, false);
// NextFragmentArgsは自動生成されます
String text = NextFragmentArgs.fromBundle(getArguments()).getText();
TextView tv = view.findViewById(R.id.textView);
tv.setText(text);
return view;
}
Author And Source
この問題について([Android/Java] Jetpack Navigation 画面遷移とFragment間のデータ受け渡し), 我々は、より多くの情報をここで見つけました https://qiita.com/smurata_pvt/items/1763802e6b1c27767d27著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .