Android FragmentActivity.onStart()处的NullPointerException
My Main活动扩展了一个Android FragmentActivity.onStart()处的NullPointerException,android,nullpointerexception,android-activity,actionbarsherlock,Android,Nullpointerexception,Android Activity,Actionbarsherlock,My Main活动扩展了一个CustomFragmentActivity,它扩展了SherlockFragmentActivity。。。在MainActivity中,我重写onStart方法,并在CustomFragmentActivity中设置一个静态布尔值。。。然后,我调用super.onStart,所以这个布尔值用于知道我是否应该向google analytics发送点击信息 当我在我的应用程序上使用Crashlytics时,我得到以下崩溃报告: java.lang.RuntimeExce
CustomFragmentActivity
,它扩展了SherlockFragmentActivity
。。。在MainActivity中,我重写onStart方法,并在CustomFragmentActivity
中设置一个静态布尔值。。。然后,我调用super.onStart
,所以这个布尔值用于知道我是否应该向google analytics发送点击信息
当我在我的应用程序上使用Crashlytics时,我得到以下崩溃报告:
java.lang.RuntimeException: Unable to start activity ComponentInfo{br.com.maisapp/br.com.maisapp.MainActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1658)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1674)
at android.app.ActivityThread.access$1500(ActivityThread.java:117)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:942)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3735)
at java.lang.reflect.Method.invokeNative(Method.java)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:662)
at dalvik.system.NativeStart.main(NativeStart.java)
Caused by: java.lang.NullPointerException
at android.support.v4.app.DialogFragment.onActivityCreated(DialogFragment.java:368)
at android.support.v4.app.Fragment.performActivityCreated(Fragment.java:1508)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:947)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1086)
at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:1884)
at android.support.v4.app.Fragment.performActivityCreated(Fragment.java:1514)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:947)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1086)
at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:1884)
at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:566)
at br.com.app.CustomFragmentActivity.onStart(CustomFragmentActivity.java:77)
at br.com.app.MainActivity.onStart(MainActivity.java:192)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1129)
at android.app.Activity.performStart(Activity.java:3791)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1631)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1674)
at android.app.ActivityThread.access$1500(ActivityThread.java:117)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:942)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3735)
at java.lang.reflect.Method.invokeNative(Method.java)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:662)
at dalvik.system.NativeStart.main(NativeStart.java)
到目前为止,我还没有复制这次崩溃。这是MainActivity的onStart(第192行是super.onStart()调用)
在CustomFragmentActivity上,onStart如下所示:
@Override
public void onStart() {
super.onStart();
if (!isMain){
ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
getGaTracker().send(MapBuilder.createAppView().build());
}
}
我将isMain实例化为:受保护的静态布尔值isMain=false代码>
虽然debuggin不会生成任何异常,但无论onCreate(应用程序打开时)或onRestart(MainActivity已停止时)后调用onStart。。想知道我应该朝哪个方向去解决这个问题吗?通过调试(观察)检查CustomFragmentActivity中的isMain,看看它是否正确null@A.S.当我静态实例化isMain时,它在运行时是否可能为null?此外,我不能将null赋值给isMain,因为boolean是一种基本数据类型……触发此操作的可能原因是您打开了一个对话框,并且屏幕旋转。这也发生在我身上,但我不确定解决方案。您可以在为DialogFragment创建的onCreate中将DialogFragment设置为setRetainInstance(true),但在整个方向更改过程中,对话框都不可见。
@Override
public void onStart() {
super.onStart();
if (!isMain){
ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
getGaTracker().send(MapBuilder.createAppView().build());
}
}