Android上的简单MVVM架构,Java上的AndroidX
Android上的简单MVVM架构,Java上的AndroidX,java,android,user-interface,mvvm,androidx,Java,Android,User Interface,Mvvm,Androidx,我真的很恼火试图弄明白frick如何创建一个简单的MVVM模式Android活动 我想要的只是将一个视图模型公共方法(它打印一个“Eureka!”日志)绑定到一个按钮(使用onClick操作) 为了实现这一目标,我从现在起所做的是: data\u activity.xml DataViewModel.java 打包it.XXXXX.XXXXX.ui.data; 导入android.util.Log; 导入androidx.lifecycle.ViewModel; 公共类DataViewMo
我真的很恼火试图弄明白frick如何创建一个简单的MVVM模式Android活动 我想要的只是将一个视图模型公共方法(它打印一个“Eureka!”日志)绑定到一个按钮(使用onClick操作)
为了实现这一目标,我从现在起所做的是: data\u activity.xml
DataViewModel.java
打包it.XXXXX.XXXXX.ui.data;
导入android.util.Log;
导入androidx.lifecycle.ViewModel;
公共类DataViewModel扩展了ViewModel{
公开无效测试(){
Log.d(“test”,“EUREKA!”);
}
}
DataActivity.java
打包it.XXXXX.XXXXX.ui.data;
导入androidx.appcompat.app.appcompat活动;
导入androidx.lifecycle.ViewModelProvider;
导入android.os.Bundle;
导入它。XXXXX.XXXXX.R;
公共类DataActivity扩展了AppCompatActivity{
私有数据视图模型mViewModel;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.data_活动);
this.mViewModel=newviewmodelprovider(this.get)(DataViewModel.class);
}
}
…最后(因为我正在处理一个现有的应用程序),我使用以下命令调用视图:
。。。
((按钮)this.findviewbyd(R.id.btndaasync2)).setOnClickListener(新的OnClickListener(){
公共void onClick(视图arg0){
意图i=新意图(MainActivity.this、DataActivity.class);
主要活动。这。startActivity(i);
}
});
...
预期的行为是通过按下DataView(已加载)来读取日志,但什么也没有发生(按钮按下动画除外)。
有人知道问题出在哪里吗?
提前谢谢你 在Android应用程序中启用数据绑定的步骤:
android.databinding.enableV2=true
数据绑定{enabled=true}
:onCreate
方法,如下所示:
package it.XXXXX.XXXXX.ui.data;
import androidx.appcompat.app.AppCompatActivity;
import androidx.databinding.DataBindingUtil;
import android.os.Bundle;
import it.XXXXX.XXXXX.R;
import it.XXXXX.XXXXX.databinding.DataActivityBinding;
public class DataActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
DataViewModel mViewModel = new DataViewModel();
DataActivityBinding binding = DataBindingUtil.setContentView(this, R.layout.data_activity);
binding.setViewModel(mViewModel);
}
}
在Android应用程序中启用数据绑定的步骤:
android.databinding.enableV2=true
数据绑定{enabled=true}
:onCreate
方法,如下所示:
package it.XXXXX.XXXXX.ui.data;
import androidx.appcompat.app.AppCompatActivity;
import androidx.databinding.DataBindingUtil;
import android.os.Bundle;
import it.XXXXX.XXXXX.R;
import it.XXXXX.XXXXX.databinding.DataActivityBinding;
public class DataActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
DataViewModel mViewModel = new DataViewModel();
DataActivityBinding binding = DataBindingUtil.setContentView(this, R.layout.data_activity);
binding.setViewModel(mViewModel);
}
}
我发现我没有正确绑定
活动中的视图模型
:
DataActivity.java
公共类DataActivity扩展了AppCompatActivity{
私有数据视图模型mViewModel;
私有数据活动绑定mBinding;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
this.mViewModel=新的DataViewModel();
this.mBinding=DataBindingUtil.setContentView(this,R.layout.data_活动);
this.mBinding.setViewModel(this.mViewModel);
}
}
希望这能帮助别人
谢谢你的建议 我发现我没有从活动
正确绑定视图模型
:
DataActivity.java
公共类DataActivity扩展了AppCompatActivity{
私有数据视图模型mViewModel;
私有数据活动绑定mBinding;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
this.mViewModel=新的DataViewModel();
this.mBinding=DataBindingUtil.setContentView(this,R.layout.data_活动);
this.mBinding.setViewModel(this.mViewModel);
}
}
希望这能帮助别人
谢谢你的建议