android - 即使在添加 ViewModel 后配置也会发生变化:Android 架构组件
问题描述
我从生命周期架构库中添加了一个ViewModel类。但它在我的代码中不起作用。我做错了什么。我是 android 的 ViewModel Arch 组件的新手。
这是我的代码:
摇篮:
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0-rc01'
implementation 'com.android.support.constraint:constraint-layout:1.1.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
// ViewModel and LiveData
implementation "android.arch.lifecycle:extensions:1.1.1"
}
视图模型:
import android.arch.lifecycle.MutableLiveData;
import android.arch.lifecycle.ViewModel;
public class NameViewModel extends ViewModel {
// Create a LiveData with a String
private MutableLiveData<String> mCurrentName;
public MutableLiveData<String> getmCurrentName() {
if (mCurrentName == null) {
mCurrentName = new MutableLiveData<>();
}
return mCurrentName;
}
}
MainActivity.java
import android.arch.lifecycle.Observer;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
private NameViewModel nameViewModel;
private TextView lblText;
private EditText txtValue;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lblText = findViewById(R.id.textview);
txtValue = findViewById(R.id.editText);
final Observer<String> nameObserver = new Observer<String>() {
@Override
public void onChanged(@Nullable String data) {
lblText.setText(data);
}
};
nameViewModel.getmCurrentName().observe(this, nameObserver);
txtValue.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence value, int start, int before, int count) {
nameViewModel.getmCurrentName().setValue(value.toString());
}
@Override
public void afterTextChanged(Editable s) {
}
});
}
}
我错过了一些必要的东西吗?
任何帮助将不胜感激。太感谢了。
解决方案
推荐阅读
- ionic3 - 将base64图像从库中选择发送到Ionic3中的服务器
- android - 注入类型的演示者导致错误(moxy)
- excel - 在线存储 Power Query 自定义函数(Github 等)并调用它
- java - 欧几里得算法得出错误结论
- node.js - 无法使用 Admin SDK 在 Firestore 模拟器中获取 FieldValue.increment
- mysql - 如何使用 jpa 处理分布式事务
- spring - multipartfile 可以用图像发送一些信息吗?
- flutter - 颤振:'未来
' 不是 bool 类型的子类型 - excel - 内存不足 VBA 错误,我什至无法打开开发人员窗口(alt + F11)
- gradle - 使用 Kotlin 和 Gradle 创建一个胖 jar - 编译与实现?