有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案