此问题可能看起来像重复的问题。但这些查询并没有帮助我解决我的问题。错误/ AndroidRuntime(775):java.lang.RuntimeException:无法启动活动ComponentInfo {..}:java.lang.NullPointerException
我想在SimpleCursorAdapter中填充(婴儿名称)列表中实现“onClick”事件。当用户点击一个名字时,就会生成一个吐司,显示数据库中记录的“id”。
这里是我的代码 -
public class CommonNames extends Activity {
TextView rowview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.common_names);
rowview = (TextView)findViewById(R.id.commonName);
CommonNamesAdapter cnTable = new CommonNamesAdapter(this);
ListView cnListView = (ListView)findViewById(R.id.common_name_layout);
cnTable.open(getApplicationContext());
Cursor c = cnTable.fetch_all_common_names_only();
startManagingCursor(c);
if(c!=null){
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
R.layout.listview,
c,
new String[] {c.getColumnName(0), c.getColumnName(1)},
new int[] {R.id.rowLayout,R.id.commonName});
cnListView.setAdapter(adapter);
}
rowview.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Context context = getApplicationContext();
String id = context.getString(R.id.commonName);
CharSequence text = "This id of this item is... "+id ;
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}
});
cnTable.close();
}
这里是listview.xml
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rowLayout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<TextView
android:id="@+id/commonName"
android:layout_alignParentLeft="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="16dp"
android:paddingLeft="14dp"
android:paddingTop="4dp"
android:paddingBottom="4dp"
/>
</LinearLayout>
这里是common_names.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<ListView
android:id = "@+id/common_name_layout"
android:layout_width="fill_parent"
android:layout_height= "wrap_content" >
</ListView>
</LinearLayout>
当我运行我的应用程序,我得到一个运行时NullPointerException。这是LogCat。请帮我解决这个问题。
11-13 18:23:27.852: INFO/COMMON_NAMES_TABLE(775): Inserting record...
11-13 18:23:27.902: INFO/COMMON_NAMES_TABLE(775): OPening DataBase Connection....
11-13 18:23:28.002: DEBUG/AndroidRuntime(775): Shutting down VM
11-13 18:23:28.002: WARN/dalvikvm(775): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
11-13 18:23:28.012: ERROR/AndroidRuntime(775): FATAL EXCEPTION: main
11-13 18:23:28.012: ERROR/AndroidRuntime(775): java.lang.RuntimeException: Unable to start activity ComponentInfo{balu.android/balu.android.CommonNames}: java.lang.NullPointerException
11-13 18:23:28.012: ERROR/AndroidRuntime(775): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
11-13 18:23:28.012: ERROR/AndroidRuntime(775): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
11-13 18:23:28.012: ERROR/AndroidRuntime(775): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
11-13 18:23:28.012: ERROR/AndroidRuntime(775): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
11-13 18:23:28.012: ERROR/AndroidRuntime(775): at android.os.Handler.dispatchMessage(Handler.java:99)
11-13 18:23:28.012: ERROR/AndroidRuntime(775): at android.os.Looper.loop(Looper.java:123)
11-13 18:23:28.012: ERROR/AndroidRuntime(775): at android.app.ActivityThread.main(ActivityThread.java:4627)
11-13 18:23:28.012: ERROR/AndroidRuntime(775): at java.lang.reflect.Method.invokeNative(Native Method)
11-13 18:23:28.012: ERROR/AndroidRuntime(775): at java.lang.reflect.Method.invoke(Method.java:521)
11-13 18:23:28.012: ERROR/AndroidRuntime(775): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
11-13 18:23:28.012: ERROR/AndroidRuntime(775): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
11-13 18:23:28.012: ERROR/AndroidRuntime(775): at dalvik.system.NativeStart.main(Native Method)
11-13 18:23:28.012: ERROR/AndroidRuntime(775): Caused by: java.lang.NullPointerException
11-13 18:23:28.012: ERROR/AndroidRuntime(775): at balu.android.CommonNames.onCreate(CommonNames.java:42)
11-13 18:23:28.012: ERROR/AndroidRuntime(775): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
11-13 18:23:28.012: ERROR/AndroidRuntime(775): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
11-13 18:23:28.012: ERROR/AndroidRuntime(775): ... 11 more
11-13 18:23:28.032: WARN/ActivityManager(59): Force finishing activity balu.android/.CommonNames
11-13 18:23:28.032: WARN/ActivityManager(59): Force finishing activity balu.android/.Select
11-13 18:23:28.585: WARN/ActivityManager(59): Activity pause timeout for HistoryRecord{45025710 balu.android/.CommonNames}
11-13 18:23:31.192: INFO/Process(775): Sending signal. PID: 775 SIG: 9
11-13 18:23:31.212: INFO/ActivityManager(59): Process balu.android (pid 775) has died.
11-13 18:23:31.212: INFO/WindowManager(59): WIN DEATH: Window{45084738 balu.android/balu.android.BabyNamesAppActivity paused=false}
谢谢。
你有CommonNames空值.java line 42. NPE(通常)是最容易解决的例外情况。您应该了解调试器的工作原理。尝试一下!顺便说一句:没有代码的例外对我们来说毫无价值......并且不,没有人想要浏览github来搜索特定的代码... – WarrenFaith
好的!我会在这里保存我的代码。谢谢。 –