-1

我已经尝试了类似问题的所有建议,但我无法解决它。Spinner 视图给了我一个空指针异常。异常发生在以下行:spinner.setAdapter(adapter);. 我怀疑它与没有正确充气有关。字符串数组应该不是问题。我还在这里尝试了几乎完全相同的代码副本:http: //developer.android.com/guide/topics/ui/controls/spinner.html

我还多次清理了我的代码。任何人都可以找到问题吗?

代码:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_settings);

        Spinner spinner = (Spinner) findViewById(R.id.themeSpinner);
        String[] themesArray = new String[]{"Dark Holo Theme"};


        // Create an ArrayAdapter using the string array and a default spinner layout
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, themesArray);
        // Specify the layout to use when the list of choices appears
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        // Apply the adapter to the spinner
        spinner.setAdapter(adapter);

XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/relativeLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".SettingsActivity" >

    <Spinner
        android:id="@+id/themeSpinner"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/screenDimSwitch"
        android:layout_centerHorizontal="true" />

</RelativeLayout>

日志猫:

12-28 16:22:04.011: E/AndroidRuntime(12269): 致命异常: main 12-28 16:22:04.011: E/AndroidRuntime(12269): java.lang.RuntimeException: 无法启动活动 ComponentInfo{com. example.sudokuandroidprobeersel/com.example.sudokuandroidprobeersel.SettingsActivity}:java.lang.NullPointerException 12-28 16:22:04.011:E/AndroidRuntime(12269):在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1970) 12 -28 16:22:04.011: E/AndroidRuntime(12269): 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1995) 12-28 16:22:04.011: E/AndroidRuntime(12269): 在 android.app .ActivityThread.access$600(ActivityThread.java:127) 12-28 16:22:04.011: E/AndroidRuntime(12269): 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1161) 12-28 16: 22:04.011:E/AndroidRuntime(12269):在 android.os.Handler.dispatchMessage(Handler.java:99) 12-28 16:22:04.011: E/AndroidRuntime(12269): 在 android.os.Looper.loop(Looper.java:137) 12-28 16 :22:04.011: E/AndroidRuntime(12269): 在 android.app.ActivityThread.main(ActivityThread.java:4512) 12-28 16:22:04.011: E/AndroidRuntime(12269): 在 java.lang.reflect。 Method.invokeNative(Native Method) 12-28 16:22:04.011: E/AndroidRuntime(12269): at java.lang.reflect.Method.invoke(Method.java:511) 12-28 16:22:04.011: E /AndroidRuntime(12269): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:984) 12-28 16:22:04.011: E/AndroidRuntime(12269): 在 com.android.internal。 os.ZygoteInit.main(ZygoteInit.java:751) 12-28 16:22:04.011: E/AndroidRuntime(12269): at dalvik.system.NativeStart.main(Native Method) 12-28 16:22:04.011:E/AndroidRuntime(12269): 引起: java.lang.NullPointerException 12-28 16:22:04.011: E/AndroidRuntime(12269): at com.example.sudokuandroidprobeersel.SettingsActivity.onCreate(SettingsActivity.java:80) 12- 28 16:22:04.011: E/AndroidRuntime(12269): 在 android.app.Activity.performCreate(Activity.java:4465) 12-28 16:22:04.011: E/AndroidRuntime(12269): 在 android.app。 Instrumentation.callActivityOnCreate(Instrumentation.java:1052) 12-28 16:22:04.011: E/AndroidRuntime(12269): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1934) 12-28 16:22:04.011: E/AndroidRuntime(12269): ... 11 更多E/AndroidRuntime(12269): 在 android.app.Activity.performCreate(Activity.java:4465) 12-28 16:22:04.011: E/AndroidRuntime(12269): 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java :1052) 12-28 16:22:04.011: E/AndroidRuntime(12269): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1934) 12-28 16:22:04.011: E/AndroidRuntime(12269): ... 11 更多E/AndroidRuntime(12269): 在 android.app.Activity.performCreate(Activity.java:4465) 12-28 16:22:04.011: E/AndroidRuntime(12269): 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java :1052) 12-28 16:22:04.011: E/AndroidRuntime(12269): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1934) 12-28 16:22:04.011: E/AndroidRuntime(12269): ... 11 更多

更新:

导致空指针异常的对象是 Spinner,而不是适配器。虽然 R.id.themeSpinner 在 R 中被正确引用。

4

2 回答 2

0

对,你应该调试它,你会发现微调器对象为空,它只能是这个。您应该清理您的项目并再次重新安装应用程序,然后它应该可以工作,它有时会发生在布局中。

于 2012-12-28T15:40:20.187 回答
0

如果您说的都是真的(1. 它肯定是微调器,2. 它在 spinner.setAdapter(adapter); 处抛出空指针)

然后我们可以有把握地说,膨胀确实出错了。

你确定你在 setContentView(R.layout.activity_settings); 中使用了正确的布局吗?微调器是否不包含在其他布局中?

于 2012-12-28T16:31:56.243 回答