Java 将值设置为静态变量将返回错误

Java 将值设置为静态变量将返回错误,java,android,static,parcelable,Java,Android,Static,Parcelable,我基本上是尝试将mRecyclerView的当前状态保存到一个静态可打包变量中,以使其在暂停时保持安全,并在恢复时将其恢复到mRcyclerView 以下是我的静态变量的类: public class MySavedState { private static MySavedState ourInstance = new MySavedState(); private Parcelable state; static MySavedState getInstance() { if(o

我基本上是尝试将mRecyclerView的当前状态保存到一个静态可打包变量中,以使其在暂停时保持安全,并在恢复时将其恢复到mRcyclerView

以下是我的静态变量的类:

public class MySavedState {
private static MySavedState ourInstance = new MySavedState();

private Parcelable state;

static MySavedState getInstance() {
    if(ourInstance == null){
        ourInstance = new MySavedState();
    }
    return ourInstance;
}

private MySavedState() {
}

public Parcelable getState() {
    return state;
}

public void setState(Parcelable state) {
    this.state = state;
}
}

下面是我试图设置一个值的行:

@Override
public void onPause() {
    super.onPause();

    Parcelable newState = mRecyclerView.onSaveInstanceState();
    state.setState(newState);


}
以及错误消息:

java.lang.RuntimeException: Unable to pause activity {com.gunaya.tasmaew/com.gunaya.tasmaew.Controller.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.gunaya.tasmaew.Model.MySavedState.setState(android.os.Parcelable)' on a null object reference
                  at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3745)
                  at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3704)
                  at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:3679)
                  at android.app.ActivityThread.access$1100(ActivityThread.java:177)
                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)
                  at android.os.Handler.dispatchMessage(Handler.java:102)
                  at android.os.Looper.loop(Looper.java:145)
                  at android.app.ActivityThread.main(ActivityThread.java:5951)
                  at java.lang.reflect.Method.invoke(Native Method)
                  at java.lang.reflect.Method.invoke(Method.java:372)
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1388)
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1183)
               Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.gunaya.tasmaew.Model.MySavedState.setState(android.os.Parcelable)' on a null object reference
                  at com.gunaya.tasmaew.Controller.mListFragment.onPause(mListFragment.java:117)
另外一个问题是,我的调试器中不断出现以下错误消息:

((Bundle)parce).mClassLoader = Cannot find local variable 'parce'

非常感谢各位抽出时间。

你们的单身汉看起来不错,但看起来你们并没有找回它

MySavedState state = MySavedState.getInstance ();

检查MySavedState对象是否为nullMySavedState状态;state为null这不是在我的类中声明它的正确方法吗?下面是我在使用setter:Bundle[{layout manager state=android.support.v7.widget.LinearLayoutManager之前在newState中得到的内容$SavedState@198ebe35,super state=android.support.v7.widget.RecyclerView$SavedState@31b952ca}]谢谢你,先生,你说得对。我试图获取变量,但这种模式适用于实例。非常感谢:)