Android ViewModel如何确保在屏幕旋转时必须绑定到相同的Activity或Fragment?
创始人
2024-08-19 04:30:03
0

在Android中,ViewModel是用于存储和管理与UI相关的数据的类。当屏幕旋转时,Activity或Fragment会重新创建,但ViewModel的实例必须保持不变。为了确保ViewModel在屏幕旋转时绑定到相同的Activity或Fragment,可以使用ViewModelProviders类提供的ViewModelProvider方式。

首先,在Activity或Fragment中创建一个ViewModelProvider实例:

ViewModelProvider viewModelProvider = new ViewModelProvider(this);

然后,在获取ViewModel时使用ViewModelProvider的get方法:

MyViewModel myViewModel = viewModelProvider.get(MyViewModel.class);

在上面的代码中,MyViewModel是自定义的ViewModel类。ViewModelProvider会检查是否已经存在与当前Activity或Fragment关联的ViewModel实例。如果已经存在,它将返回现有的实例;如果不存在,它将创建一个新的实例。

在Activity或Fragment中使用ViewModelProvider获取ViewModel的示例代码如下:

public class MyActivity extends AppCompatActivity {
    private MyViewModel myViewModel;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my);

        ViewModelProvider viewModelProvider = new ViewModelProvider(this);
        myViewModel = viewModelProvider.get(MyViewModel.class);

        // 使用myViewModel进行操作
    }
}

通过这种方式,无论屏幕如何旋转,ViewModel实例都会保持不变,并且能够与相应的Activity或Fragment绑定。

需要注意的是,为了使ViewModelProvider能够正确地管理ViewModel的生命周期,Activity或Fragment必须继承自ViewModelStoreOwner接口。

相关内容

热门资讯

透视新版!扑克之星辅助,德州透... 透视新版!扑克之星辅助,德州透视是真的假的(其实是有挂)1、德州透视是真的假的机器人多个强度级别选择...
透视真的!xpoker辅助,智... 透视真的!xpoker辅助,智星菠萝透视(竟然是有挂)1、起透看视 智星菠萝透视透明视辅助2、随意选...
aapoker猫腻!aapok... aapoker猫腻!aapoker安卓版辅助,(aApoker)确实有挂,详细教程(有挂教学);小薇...
透视免费!德州私人局怎么透视,... 透视免费!德州私人局怎么透视,pokeplus脚本(确实有挂)1、进入到德州私人局怎么透视黑科技之后...
aapoker透明挂!aapo... aapoker透明挂!aapoker安卓版辅助,(AaPOKER)本来真的是有挂,详细教程(有挂总结...
透视黑科技!xpoker辅助神... 透视黑科技!xpoker辅助神器,xpoker透视辅助(其实存在有挂)1、下载好xpoker辅助神器...
aapoker透明挂!aa p... aapoker透明挂!aa poker下载地址,(aapokeR)一贯是有挂,详细教程(有挂辅助挂)...
透视教程!sohoo poke... 透视教程!sohoo poker辅助,哈糖大菠萝辅助器(都是有挂);1、透视教程!sohoo pok...
aapoker有外 挂!aap... 1、aapoker有外 挂!aapoker是什么软件,(AAPOKer)本来是真的有挂,详细教程(有...
透视了解!pokemmo辅助官... 透视了解!pokemmo辅助官网,德州局透视脚本免费版下载手机版(切实真的是有挂)1、每一步都需要思...