Android フラグメント間でデータを共有する

Uncategorized
226 words

ViewModel を共有して、フラグメント間でデータを使いまわしていきます。

環境

  • Windows 11 Home 21H2
  • Android Studio Bumblebee | 2021.1.1 Patch 1
  • 言語:Java
  • SDKバージョン:API 30 Android 11.0 (R)

手順

プロジェクト作成

今回は Navigation Drawer Activity のテンプレートを使っていきます。最初から Fragment と ViewModel があるので、動作確認が簡単です。

Navigation Drawer Activity

Java API 30 Android 11.0 (R)

ViewModel共有

MainActivity と 各Fragment で ViewModel を共有するように設定していきます。

MainActivity

1
2
3
4
5
6
7
8
9
10
11
12
public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

MainViewModel viewModel = new ViewModelProvider(this).get(MainViewModel.class);

/*** 省略 ***/
}
/*** 省略 ***/
}

Fragment

1
2
3
4
5
6
7
8
9
10
public class HomeFragment extends Fragment {

public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

MainViewModel viewModel = new ViewModelProvider(requireActivity()).get(MainViewModel.class);

/*** 省略 ***/
}
/*** 省略 ***/
}

データ共有

ViewModel内のデータを、各Fragmentで参照する設定にします。

1
2
final TextView textView = binding.textHome;
textView.setText(viewModel.Text);

確認

各Fragmentで同じ値が表示される。

Home

Gallery

参考