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接口。

相关内容

热门资讯

第五分钟实锤!德扑数据软件(线... 第五分钟实锤!德扑数据软件(线上wpk德州)果然真的是有挂(详细辅助安装教程)1、每一步都需要思考,...
第九分钟实锤!德州之星有辅助挂... 第九分钟实锤!德州之星有辅助挂(云扑克德州)竟然是真的有挂(详细辅助必备教程)德州之星有辅助挂辅助器...
2分钟实锤!智星德州菠萝外挂(... 2分钟实锤!智星德州菠萝外挂(德州扑克)原来是真的有挂(详细辅助黑科技教程)1、许多玩家不知道智星德...
第9分钟实锤!德扑ai助手(手... 第9分钟实锤!德扑ai助手(手机德州)本来是真的有挂(详细辅助存在挂教程)德扑ai助手软件透明挂微扑...
第8分钟实锤!德扑之星有作弊(... 第8分钟实锤!德扑之星有作弊(德州)其实有挂(详细辅助扑克教程)1、下载好德扑之星有作弊辅助软件之后...
第三分钟实锤!德扑ai智能(n... 第三分钟实锤!德扑ai智能(nzt德州)真是是有挂(详细辅助分享教程);1、全新机制【德扑ai智能软...
第8分钟实锤!德扑之星有猫腻(... 第8分钟实锤!德扑之星有猫腻(来玩德州app)一贯真的有挂(详细辅助2025新版教程)1、完成德扑之...
第六分钟实锤!德州之星辅助挂(... 第六分钟实锤!德州之星辅助挂(德扑之星)真是真的有挂(详细辅助透明教程)1、许多玩家不知道德州之星辅...
两分钟实锤!德扑之星辅助器购买... 两分钟实锤!德扑之星辅助器购买(德州扑克)其实存在有挂(详细辅助透明挂教程)1、进入游戏-大厅左侧-...
第9分钟实锤!智星德州菠萝有挂... 第9分钟实锤!智星德州菠萝有挂吗(来玩德州app)总是是有挂(详细辅助揭秘攻略)1、智星德州菠萝有挂...