0

Ich bekomme diesen Fehler und ich weiß nicht warum. Derselbe Code hat vorher funktioniert; Das Problem trat nach einem Update irgendwann auf.NullPointerException on Activity onCreate

Stapelüberwachung:

E/AndroidRuntime: FATAL EXCEPTION: main 
Process: com.domain.appname, PID: 17964 
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.domain.appname/com.domain.appname.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.domain.appname.NavigationDrawerFragment.setUp(int, android.support.v4.widget.DrawerLayout)' on a null object reference 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2379) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2441) 
    at android.app.ActivityThread.access$800(ActivityThread.java:162) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1349) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:135) 
    at android.app.ActivityThread.main(ActivityThread.java:5431) 
    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:914) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:707) 
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.domain.appname.NavigationDrawerFragment.setUp(int, android.support.v4.widget.DrawerLayout)' on a null object reference 
    at com.domain.appname.MainActivity.onCreate(MainActivity.java:40) 
    at android.app.Activity.performCreate(Activity.java:6056) 
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2332) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2441)  
    at android.app.ActivityThread.access$800(ActivityThread.java:162)  
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1349)  
    at android.os.Handler.dispatchMessage(Handler.java:102)  
    at android.os.Looper.loop(Looper.java:135)  
    at android.app.ActivityThread.main(ActivityThread.java:5431)  
    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:914)  
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:707) 

Hier ist der säumige Code in MainActivity.java:

... 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    if (BuildConfig.DEBUG){ Log.d(TAG, "Created in debug mode"); } 

    NavigationDrawerFragment mNavigationDrawerFragment = (NavigationDrawerFragment) 
     getSupportFragmentManager().findFragmentById(R.id.navigation_drawer); 

    // Set up the drawer. 
    Log.d(TAG, "Setting up drawer"); 
    mNavigationDrawerFragment.setUp(// Line 40 
     R.id.navigation_drawer, 
     (DrawerLayout) findViewById(R.id.drawer_layout) 
    ); 

... 

ich zwei Fragen gefunden haben, die ähnliche Probleme zu haben scheinen. (Hier ist the first und the second) Die erste scheint nicht relevant, und die zweite ist unbeantwortet.

Ich bin verwirrt. drawer_layout und navigation_drawer do nicht werfen "Symbol unaufgelöste" Fehler. Wie ich schon sagte, das alles verwendet, um zu arbeiten ...

Antwort

3

Sie rufen nie Activity.setContentView(int). So sollte es sein:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.layout_containing_drawer); 

    // Rest. 
} 
+0

Yup, sieht so aus, als hätte ich diese wichtige Zeile fallen gelassen, als ich das 'Created in debug mode' hinzugefügt habe. Ich hoffe, das hilft anderen (so kann ich mich weniger idiotisch fühlen). – Keith

Verwandte Themen