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