java错误:MutableLiveData上出现空指针异常
我尝试用livedata和ViewModel构建一个计时器。AndroidViewModel已用于获取上下文,并已将其传递给CountDownTimer。在每个间隔之后,使用livData将相同的数据传递给mainActivity 这就是我面临的错误:
E/AndroidRuntime: FATA
L EXCEPTION: main
Process: com.example.testproject, PID: 7818
java.lang.NullPointerException: Attempt to invoke virtual method 'void 安卓x.lifecycle.MutableLiveData.observe(安卓x.lifecycle.LifecycleOwner, 安卓x.lifecycle.Observer)' on a null object reference
at com.example.testproject.MainActivity.onStart(MainActivity.java:30)
at 安卓.app.Instrumentation.callActivityOnStart(Instrumentation.java:1435)
at 安卓.app.Activity.performStart(Activity.java:8018)
at 安卓.app.ActivityThread.handleStartActivity(ActivityThread.java:3475)
at 安卓.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:221)
at 安卓.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:201)
at 安卓.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:173)
at 安卓.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
at 安卓.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
at 安卓.os.Handler.dispatchMessage(Handler.java:106)
at 安卓.os.Looper.loop(Looper.java:223)
at 安卓.app.ActivityThread.main(ActivityThread.java:7656)
at java.lang.reflect.Method.invoke(Native Method)
at com.安卓.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.安卓.internal.os.ZygoteInit.main(ZygoteInit.java:947)
下面是主要课程
主要类别:
public class MainActivity extends AppCompatActivity {
MyObserver myObserver;
TextView textView;
MainViewModel mViewModel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = findViewById(R.id.textViewGoal);
mViewModel = ViewModelProvider.AndroidViewModelFactory.getInstance(getApplication()).create(MainViewModel.class);
}
@Override
protected void onStart() {
super.onStart();
mViewModel.liveData.observe(this, new Observer<String>() {
@Override
public void onChanged(String s) {
textView.setText(s);
}
});
}
}
这是ViewModel类
ViewModel class:
public class MainViewModel extends AndroidViewModel {
MutableLiveData<String> liveData;
public MainViewModel(@NonNull Application application) {
super(application);
startTimer();
}
void startTimer(){
CountDownTimer countDownTimer = new CountDownTimer(20000,1000) {
@Override
public void onTick(long l) {
liveData.postValue(String.valueOf(l/1000));
}
@Override
public void onFinish() {
}
}.start();
}
}
共 (0) 个答案