SetAdapter ListView中的NullPointerException

Kar*_*rma 0 android

我真的很沮丧这个错误.我几乎不可能找到.

代码很简单.我正在尝试使用导航抽屉.

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<FrameLayout
    android:id="@+id/main_frame"
    android:layout_width="match_parent"
    android:layout_height="match_parent" 
   />

<ListView
    android:id="@+id/navigationdrawer"
    android:layout_width="240dp"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:background="#111"
    android:divider="@android:color/transparent"
    android:dividerHeight="0dp" />
Run Code Online (Sandbox Code Playgroud)

要向ListView添加项目,我添加了一个字符串数组和string.xml

<resources>

<string name="app_name">Test</string>
<string name="action_settings">Settings</string>
<string name="hello_world">Hello world!</string>

<string-array name="Contents">
    <item>Calculator</item>
    <item>About Us</item>
</string-array>

</resources>
Run Code Online (Sandbox Code Playgroud)

然后在MainActivity.java中

import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class MainActivity extends Activity {

String[] drawerListItems;
ListView drawerList;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    drawerListItems = getResources().getStringArray(R.array.Contents);
    drawerList = (ListView) findViewById(R.id.navigationdrawer);
    ArrayAdapter<String> aa = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,drawerListItems);
    drawerList.setAdapter(aa);
    setContentView(R.layout.navigation);
}

}
Run Code Online (Sandbox Code Playgroud)

logcat的

06-11 22:31:58.650: E/AndroidRuntime(21891): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.stfo.mulator/com.stfo.mulator.MainActivity}: java.lang.NullPointerException
06-11 22:31:58.650: E/AndroidRuntime(21891):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2209)
06-11 22:31:58.650: E/AndroidRuntime(21891):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2269)
06-11 22:31:58.650: E/AndroidRuntime(21891):    at android.app.ActivityThread.access$800(ActivityThread.java:139)
06-11 22:31:58.650: E/AndroidRuntime(21891):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1210)
06-11 22:31:58.650: E/AndroidRuntime(21891):    at android.os.Handler.dispatchMessage(Handler.java:102)
06-11 22:31:58.650: E/AndroidRuntime(21891):    at android.os.Looper.loop(Looper.java:136)
06-11 22:31:58.650: E/AndroidRuntime(21891):    at android.app.ActivityThread.main(ActivityThread.java:5102)
06-11 22:31:58.650: E/AndroidRuntime(21891):    at java.lang.reflect.Method.invokeNative(Native Method)
06-11 22:31:58.650: E/AndroidRuntime(21891):    at java.lang.reflect.Method.invoke(Method.java:515)
06-11 22:31:58.650: E/AndroidRuntime(21891):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
06-11 22:31:58.650: E/AndroidRuntime(21891):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
06-11 22:31:58.650: E/AndroidRuntime(21891):    at dalvik.system.NativeStart.main(Native Method)
06-11 22:31:58.650: E/AndroidRuntime(21891): Caused by: java.lang.NullPointerException
06-11 22:31:58.650: E/AndroidRuntime(21891):    at com.stfo.mulator.MainActivity.onCreate(MainActivity.java:19)
06-11 22:31:58.650: E/AndroidRuntime(21891):    at android.app.Activity.performCreate(Activity.java:5248)
06-11 22:31:58.650: E/AndroidRuntime(21891):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1110)
06-11 22:31:58.650: E/AndroidRuntime(21891):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2173)
06-11 22:31:58.650: E/AndroidRuntime(21891):    ... 11 more
Run Code Online (Sandbox Code Playgroud)

MLP*_*CiM 5

您正在尝试在设置contentView之前查找视图,以便将结果设置为null.

setContentView(R.layout.navigation);向下移动super.onCreate(savedInstanceState);