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

アプリ開発

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

public class MainActivity extends AppCompatActivity {

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

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

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

Fragment

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で参照する設定にします。

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

確認

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

Home
Gallery

参考

タイトルとURLをコピーしました