【发布时间】:2015-06-02 18:19:32
【问题描述】:
我有一个对话框屏幕,在对话框内我有一个列表视图。我想通过 toast 消息显示从列表视图中单击了哪个项目。因此,我尝试使用 listview.getSelectedItem().toString() 通过 toast 消息显示单击项的消息,但是单击列表项时它崩溃了。但是,如果我在列表视图中单击项目时仅按 toast 显示字符串,则不会发生崩溃。例如:
Toast.makeText(MainActivity.this, "Hello World", Toast.LENGTH_LONG).show();
但是在下面的代码中崩溃了:
private void showDialer()
{
//DIALOG SCREEN
final Dialog dialog = new Dialog(ActionModes.this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.dialer_dialog);
final ListView book_list = (ListView)dialog.findViewById(R.id.listBooks);
ArrayAdapter<?> adapter_booklist = ArrayAdapter.createFromResource(
this, R.array.locations, android.R.layout.simple_spinner_item);
adapter_booklist.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
book_list.setAdapter(adapter_booklist);
book_list.setOnItemClickListener(new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id)
{
Toast.makeText(MainActivity.this, book_list.getSelectedItem().toString(), Toast.LENGTH_LONG).show();
}
});
dialog.show();
}
LOGCAT
06-02 23:53:34.521: I/class com.actionbarsherlock.sample.demos.ExternalDbOpenHelper(8581): 数据库已经存在 06-02 23:53:35.321: W/KeyCharacterMap(8581): id -1 没有键盘 06-02 23:53:35.321:W/KeyCharacterMap(8581):使用默认键盘映射:/system/usr/keychars/qwerty.kcm.bin 06-02 23:53:41.291: W/dalvikvm(8581): threadid=1: 线程以未捕获的异常退出 (group=0x2aac8830) 06-02 23:53:41.291:E/AndroidRuntime(8581):致命异常:主要 06-02 23:53:41.291: E/AndroidRuntime(8581): java.lang.NullPointerException 06-02 23:53:41.291: E/AndroidRuntime(8581): at com.actionbarsherlock.sample.demos.ActionModes$2.onItemClick(ActionModes.java:87) 06-02 23:53:41.291: E/AndroidRuntime(8581): 在 android.widget.AdapterView.performItemClick(AdapterView.java:284) 06-02 23:53:41.291: E/AndroidRuntime(8581): 在 android.widget.ListView.performItemClick(ListView.java:3382) 06-02 23:53:41.291: E/AndroidRuntime(8581): 在 android.widget.AbsListView$PerformClick.run(AbsListView.java:1702) 06-02 23:53:41.291: E/AndroidRuntime(8581): 在 android.os.Handler.handleCallback(Handler.java:587) 06-02 23:53:41.291: E/AndroidRuntime(8581): 在 android.os.Handler.dispatchMessage(Handler.java:92) 06-02 23:53:41.291: E/AndroidRuntime(8581): 在 android.os.Looper.loop(Looper.java:123) 06-02 23:53:41.291: E/AndroidRuntime(8581): 在 android.app.ActivityThread.main(ActivityThread.java:4627) 06-02 23:53:41.291: E/AndroidRuntime(8581): 在 java.lang.reflect.Method.invokeNative(Native Method) 06-02 23:53:41.291: E/AndroidRuntime(8581): 在 java.lang.reflect.Method.invoke(Method.java:521) 06-02 23:53:41.291: E/AndroidRuntime(8581): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:876) 06-02 23:53:41.291: E/AndroidRuntime(8581): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:634) 06-02 23:53:41.291: E/AndroidRuntime(8581): at dalvik.system.NativeStart.main(Native Method)
【问题讨论】:
-
向我们展示 LogCat..请!!
-
@Roon13 我已经发布了 LogCat
-
什么是
ActionModes.java:87? -
那是
Toast.makeText(ActionModes.this, book_list.getSelectedItem().toString(), Toast.LENGTH_LONG).show(); -
book_list.getSelectedItem()返回空值。你调试过你的文件吗?