几个fragment共用ViewModel
时间: 2024-05-01 08:16:32 浏览: 15
可以通过在activity或fragment中创建ViewModel实例,并将其传递给需要共享数据的fragment来实现。
例如,在activity中创建一个ViewModel实例:
```
public class MainActivity extends AppCompatActivity {
private SharedViewModel sharedViewModel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sharedViewModel = ViewModelProviders.of(this).get(SharedViewModel.class);
}
}
```
然后,在需要共享数据的fragment中,使用ViewModelProviders获取这个ViewModel实例:
```
public class FragmentA extends Fragment {
private SharedViewModel sharedViewModel;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
sharedViewModel = ViewModelProviders.of(getActivity()).get(SharedViewModel.class);
}
}
```
这样,FragmentA和MainActivity就可以共享同一个ViewModel实例中的数据了。同时,其他需要共享数据的fragment也可以采用同样的方式获取这个ViewModel实例。