0

CalendarPopUpアクティビティを開始すると、が表示されNullPointerExceptionます。

これが私のコードです。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setUpWindow();
    Intent intent = getIntent();
    Bundle extras = intent.getExtras(); // This is Line 37
    boolean isForResult = extras.containsKey("result");
            //...
}

これが例外です

07-30 09:33:47.269: E/AndroidRuntime(19979): FATAL EXCEPTION: main
07-30 09:33:47.269: E/AndroidRuntime(19979): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.moveinblue.planner/com.moveinblue.planner.utils.popup.CalendarPopup}: java.lang.NullPointerException
07-30 09:33:47.269: E/AndroidRuntime(19979):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2079)
07-30 09:33:47.269: E/AndroidRuntime(19979):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2104)
07-30 09:33:47.269: E/AndroidRuntime(19979):    at android.app.ActivityThread.access$600(ActivityThread.java:132)
07-30 09:33:47.269: E/AndroidRuntime(19979):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1157)
07-30 09:33:47.269: E/AndroidRuntime(19979):    at android.os.Handler.dispatchMessage(Handler.java:99)
07-30 09:33:47.269: E/AndroidRuntime(19979):    at android.os.Looper.loop(Looper.java:137)
07-30 09:33:47.269: E/AndroidRuntime(19979):    at android.app.ActivityThread.main(ActivityThread.java:4575)
07-30 09:33:47.269: E/AndroidRuntime(19979):    at java.lang.reflect.Method.invokeNative(Native Method)
07-30 09:33:47.269: E/AndroidRuntime(19979):    at java.lang.reflect.Method.invoke(Method.java:511)
07-30 09:33:47.269: E/AndroidRuntime(19979):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
07-30 09:33:47.269: E/AndroidRuntime(19979):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
07-30 09:33:47.269: E/AndroidRuntime(19979):    at dalvik.system.NativeStart.main(Native Method)
07-30 09:33:47.269: E/AndroidRuntime(19979): Caused by: java.lang.NullPointerException
07-30 09:33:47.269: E/AndroidRuntime(19979):    at com.moveinblue.planner.utils.popup.CalendarPopup.onCreate(CalendarPopup.java:37)
07-30 09:33:47.269: E/AndroidRuntime(19979):    at android.app.Activity.performCreate(Activity.java:4465)
07-30 09:33:47.269: E/AndroidRuntime(19979):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
07-30 09:33:47.269: E/AndroidRuntime(19979):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2033)
07-30 09:33:47.269: E/AndroidRuntime(19979):    ... 11 more

誰かがここで私を助けることができますか?

デバッグ後、インテントのmExtrasオブジェクトがnullであることがわかりました(インテントは実際にはnullではありませんが、その内部オブジェクトのほとんどはnullです)。もちろん、呼び出すgetExtras()とnullが返され、呼び出すcontainsKey()と。がスローされNullPointerExceptionます。

4

1 に答える 1

2

getExtras()インテントに追加が追加されていない場合、メソッドはnullを返します(ドキュメントextra最初にそれをインテントに追加してから、を開始してから、これをからCalendarPopUpActivity抽出してみてください。BundleIntent

編集:

必ずしも余分なものが必要ない場合は、最初に次のように確認してください

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setUpWindow();
    Intent intent = getIntent();
    Bundle extras = intent.getExtras(); // This is Line 37
    if (extras != null) {
        boolean isForResult = extras.containsKey("result");
        //...
    }
}

このようにして、インテントに余分なものがあるかどうかを検出できるようになり、NullPointerException

于 2012-07-30T07:47:45.773 に答える