Android 无法从SQLite DB填充微调器

Android 无法从SQLite DB填充微调器,android,sqlite,spinner,Android,Sqlite,Spinner,我已经阅读了一些教程,试图从本地SQLite数据库填充微调器。我创建了一个类,成功地将项目插入到数据库中,但当我尝试填充微调器时,当我尝试将数据附加到微调器时,它似乎失败了(但数据到底是什么,我不确定..哈哈)我尝试了多种方法来实现这一点,但每次都会出现相同的错误。谁能解释一下为什么会发生这种情况,或者一个可能的解决办法是,我非常感激 postreview.xml上的我的微调器: <Spinner android:id="@+id/category_spinner" and

我已经阅读了一些教程,试图从本地SQLite数据库填充微调器。我创建了一个类,成功地将项目插入到数据库中,但当我尝试填充微调器时,当我尝试将数据附加到微调器时,它似乎失败了(但数据到底是什么,我不确定..哈哈)我尝试了多种方法来实现这一点,但每次都会出现相同的错误。谁能解释一下为什么会发生这种情况,或者一个可能的解决办法是,我非常感激

postreview.xml上的我的微调器:

<Spinner
    android:id="@+id/category_spinner"
    android:layout_width="fill_parent"
    android:layout_height="50dp"
    android:layout_alignParentLeft="true"
    android:layout_marginRight="15dp"
    android:layout_below="@+id/category_label"
    android:layout_marginLeft="15dp" 
    android:textSize="8dp" 
    android:prompt="@string/spinner_title"
    />

您需要将此代码放在setContentView之后

    categorySelect = (Spinner) findViewById(R.id.category_spinner);
 loadSpinnerCategories(); 

这里的问题是,在绑定布局之前,您试图初始化微调器

,而不是调用
setContentView
。因此,您的代码无法找到微调器,您将获得一个NPE

稍微修改一下你的onCreate

@Override
protected void onCreate(Bundle savedInstanceState) 
{
    //Add this line, your_layout is your layout where your spinner is defined.
    setContentView(R.layout.your_layout);


    categorySelect = (Spinner) findViewById(R.id.category_spinner);
    loadSpinnerCategories();

    super.onCreate(savedInstanceState);
    setContentView(R.layout.postreview);
}

试试这个。在设置内容视图之前,不能填充微调器。谢谢

您使用LogCat错误列表更新了什么错误非常感谢!工作得很有魅力,真不敢相信我没想到这个哈哈
03-15 16:58:25.902: D/Week06Activity(8063): in onCreate()
03-15 16:58:34.631: D/PostReview(8063): New DB Handler
03-15 16:58:34.751: D/PostReview(8063): Got List of Categories
03-15 16:58:34.751: D/PostReview(8063): Created Adapter for spinner
03-15 16:58:34.751: D/PostReview(8063): list view with radio button
03-15 16:58:34.761: D/AndroidRuntime(8063): Shutting down VM
03-15 16:58:34.761: W/dalvikvm(8063): threadid=1: thread exiting with uncaught exception (group=0x40015560)
03-15 16:58:34.791: E/AndroidRuntime(8063): FATAL EXCEPTION: main
03-15 16:58:34.791: E/AndroidRuntime(8063): java.lang.RuntimeException: Unable to start activity ComponentInfo{ca.nait.kerickson16/ca.nait.kerickson16.PostReview}: java.lang.NullPointerException
03-15 16:58:34.791: E/AndroidRuntime(8063):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
03-15 16:58:34.791: E/AndroidRuntime(8063):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
03-15 16:58:34.791: E/AndroidRuntime(8063):     at android.app.ActivityThread.access$1500(ActivityThread.java:117)
03-15 16:58:34.791: E/AndroidRuntime(8063):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
03-15 16:58:34.791: E/AndroidRuntime(8063):     at android.os.Handler.dispatchMessage(Handler.java:99)
03-15 16:58:34.791: E/AndroidRuntime(8063):     at android.os.Looper.loop(Looper.java:123)
03-15 16:58:34.791: E/AndroidRuntime(8063):     at android.app.ActivityThread.main(ActivityThread.java:3683)
03-15 16:58:34.791: E/AndroidRuntime(8063):     at java.lang.reflect.Method.invokeNative(Native Method)
03-15 16:58:34.791: E/AndroidRuntime(8063):     at java.lang.reflect.Method.invoke(Method.java:507)
03-15 16:58:34.791: E/AndroidRuntime(8063):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
03-15 16:58:34.791: E/AndroidRuntime(8063):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
03-15 16:58:34.791: E/AndroidRuntime(8063):     at dalvik.system.NativeStart.main(Native Method)
03-15 16:58:34.791: E/AndroidRuntime(8063): Caused by: java.lang.NullPointerException
03-15 16:58:34.791: E/AndroidRuntime(8063):     at ca.nait.kerickson16.PostReview.loadSpinnerCategories(PostReview.java:54)
03-15 16:58:34.791: E/AndroidRuntime(8063):     at ca.nait.kerickson16.PostReview.onCreate(PostReview.java:24)
03-15 16:58:34.791: E/AndroidRuntime(8063):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
03-15 16:58:34.791: E/AndroidRuntime(8063):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
03-15 16:58:34.791: E/AndroidRuntime(8063):     ... 11 more
    categorySelect = (Spinner) findViewById(R.id.category_spinner);
 loadSpinnerCategories(); 
@Override
protected void onCreate(Bundle savedInstanceState) 
{
    //Add this line, your_layout is your layout where your spinner is defined.
    setContentView(R.layout.your_layout);


    categorySelect = (Spinner) findViewById(R.id.category_spinner);
    loadSpinnerCategories();

    super.onCreate(savedInstanceState);
    setContentView(R.layout.postreview);
}
@Override
protected void onCreate(Bundle savedInstanceState) 
{
setContentView(R.layout.postreview); // content view should be placed first
categorySelect = (Spinner) findViewById(R.id.category_spinner);
loadSpinnerCategories();

super.onCreate(savedInstanceState);

}