首页 > 解决方案 > 在 Activity 上调用 onSaveInstanceState

问题描述

我继承了一个项目,试图理解和解决一个老错误。

当我开始一个活动并让它坐一会儿(有时它几乎是立即的),但它似乎进入暂停状态或其他东西并尝试重新加载活动并出现错误。

“引起:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法'java.lang.String ...'”

我发现当我将它添加到我的活动时:

@Override
public void onSaveInstanceState(Bundle savedInstanceState)
{
  //super.onSaveInstanceState(savedInstanceState);
}

它似乎完美地工作。

但是,当我取消注释上面的行时super.onSaveInstanceState(savedInstanceState);,我再次收到错误。

我的活动正在扩展 ActionBarActivity,如果这有帮助的话。

任何帮助,将不胜感激。谢谢!

相关代码:

@Override
protected void prepareLayout() {
  textMessage = (TextView) findViewById(R.id.textMessage);
  textNotes = (EditText) findViewById(R.id.textNotes);

  textMessage.setText(getOneOfMyItems().getText());
  // ... the above line is where the problem error is thrown.
}

Stack Trace:
    Process: com.myproj.myproj, PID: 9272
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.myproj.myproj/com.myproj.activities.MyActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.myproj.data.MyItems.getText()' on a null object reference
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3288)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3384)
        at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:5433)
        at android.app.ActivityThread.access$1200(ActivityThread.java:226)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1810)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:148)
        at android.app.ActivityThread.main(ActivityThread.java:7270)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.myproj.data.MyItems.getText()' on a null object reference
        at com.myproj.xyz.MyFragment.prepareLayout(MyFragment.java:44)
        at com.myproj.fragments.BaseFragment.prepareAndSetView(BaseFragment.java:49)
        at         at com.myproj.xyz.BaseMyFragment.onCreateView(BaseMyFragment.java:21)
        at android.support.v4.app.Fragment.performCreateView(Fragment.java:2074)
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1286)
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1268)
        at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:2143)
        at android.support.v4.app.Fragment.performActivityCreated(Fragment.java:2089)
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1129)
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1286)
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1268)
        at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:2143)
        at android.support.v4.app.FragmentController.dispatchActivityCreated(FragmentController.java:201)
        at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:615)
        at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1266)
        at android.app.Activity.performStart(Activity.java:6943)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3245)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3384) 
        at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:5433) 
        at android.app.ActivityThread.access$1200(ActivityThread.java:226) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1810) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:148) 
        at android.app.ActivityThread.main(ActivityThread.java:7270) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 

标签: android

解决方案


推荐阅读