Spinner导致空指针异常

时间:2012-12-28 15:29:10

标签: android view

我已尝试过类似问题的所有建议,但我无法解决。 Spinner视图给了我一个空指针异常。例外情况发生在以下行:spinner.setAdapter(adapter);。我怀疑这与它没有正确充气有关。 String数组应该不是问题。我还在这里尝试了几乎完全相同的代码副本: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>

logcat的:

  

12-28 16:22:04.011:E / AndroidRuntime(12269):致命异常:主要   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):at   android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1970)   12-28 16:22:04.011:E / AndroidRuntime(12269):at   android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1995)   12-28 16:22:04.011:E / AndroidRuntime(12269):at   android.app.ActivityThread.access $ 600(ActivityThread.java:127)12-28   16:22:04.011:E / AndroidRuntime(12269):at   android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1161)   12-28 16:22:04.011:E / AndroidRuntime(12269):at   android.os.Handler.dispatchMessage(Handler.java:99)12-28   16:22:04.011:E / AndroidRuntime(12269):at   android.os.Looper.loop(Looper.java:137)12-28 16:22:04.011:   E / AndroidRuntime(12269):at   android.app.ActivityThread.main(ActivityThread.java:4512)12-28   16:22:04.011:E / AndroidRuntime(12269):at   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):at   com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:984)   12-28 16:22:04.011:E / AndroidRuntime(12269):at   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):at   android.app.Activity.performCreate(Activity.java:4465)12-28   16:22:04.011:E / AndroidRuntime(12269):at   android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1052)   12-28 16:22:04.011:E / AndroidRuntime(12269):at   android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1934)   12-28 16:22:04.011:E / AndroidRuntime(12269):... 11更多

更新

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

2 个答案:

答案 0 :(得分:0)

是的,你应该调试它,你会发现spinner对象是null,它只能是这个。你应该清理你的项目并重新安装应用程序,它应该工作,有时会出现布局。

答案 1 :(得分:0)

如果你说的都是真的 (1.它当然是微调器,2。它将空指针抛出到spinner.setAdapter(适配器);)

然后我们可以安全地说明膨胀确实是错误的。

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