2013-01-15 30 views
0

我試圖在列表視圖中顯示數據庫中的內容,但每次打開它時,都會強制關閉。這裏是我的代碼:試圖在列表視圖中顯示數據時,應用程序正在關閉強制關閉

public class AlertViews extends Activity { 

private DatabaseHelper db; 
private SQLiteDatabase datab; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.viewalerter); 
    ListView listview = (ListView)findViewById(R.id.viewalert); 

// db.getReadableDatabase(); 
    Cursor c=datab.query(DatabaseHelper.DATABASE_TABLE, new String[]{DatabaseHelper.KEY_ALERT,DatabaseHelper.KEY_TRIGGER}, null, null,null,null,String.format("%s", DatabaseHelper.KEY_ALERT)); 
    String x=c.getColumnName(0); 
    String y=c.getColumnName(1); 
    String[] cl={x,y}; 
    int[] v={R.id.nameal,R.id.trigna}; 
    SimpleCursorAdapter simcr=new SimpleCursorAdapter(this,R.layout.simplerow,c,cl,v,0); 
    listview.setAdapter(simcr); 

} 

} 

下面是上述活動的xml文件:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" > 

<ListView 
android:id="@+id/viewalert" 
android:layout_width="wrap_content" 
android:layout_height="fill_parent" 
/> 

<TextView 
android:id="@+id/nameal" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
/> 

<TextView 
android:id="@+id/trigna" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
/> 
</RelativeLayout> 

這裏是我的日誌文件:

01-16 01:01:14.845: E/AndroidRuntime(806): FATAL EXCEPTION: main 
01-16 01:01:14.845: E/AndroidRuntime(806): java.lang.RuntimeException: Unable to start activity ComponentInfo{alertme.app/alertme.app.AlertViews}: java.lang.NullPointerException 
01-16 01:01:14.845: E/AndroidRuntime(806): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059) 
01-16 01:01:14.845: E/AndroidRuntime(806): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) 
01-16 01:01:14.845: E/AndroidRuntime(806): at android.app.ActivityThread.access$600(ActivityThread.java:130) 
01-16 01:01:14.845: E/AndroidRuntime(806): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) 
01-16 01:01:14.845: E/AndroidRuntime(806): at android.os.Handler.dispatchMessage(Handler.java:99) 
01-16 01:01:14.845: E/AndroidRuntime(806): at android.os.Looper.loop(Looper.java:137) 
01-16 01:01:14.845: E/AndroidRuntime(806): at android.app.ActivityThread.main(ActivityThread.java:4745) 
01-16 01:01:14.845: E/AndroidRuntime(806): at java.lang.reflect.Method.invokeNative(Native Method) 
01-16 01:01:14.845: E/AndroidRuntime(806): at java.lang.reflect.Method.invoke(Method.java:511) 
01-16 01:01:14.845: E/AndroidRuntime(806): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
01-16 01:01:14.845: E/AndroidRuntime(806): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
01-16 01:01:14.845: E/AndroidRuntime(806): at dalvik.system.NativeStart.main(Native Method) 
01-16 01:01:14.845: E/AndroidRuntime(806): Caused by: java.lang.NullPointerException 
01-16 01:01:14.845: E/AndroidRuntime(806): at alertme.app.AlertViews.onCreate(AlertViews.java:21) 
01-16 01:01:14.845: E/AndroidRuntime(806): at android.app.Activity.performCreate(Activity.java:5008) 
01-16 01:01:14.845: E/AndroidRuntime(806): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079) 
01-16 01:01:14.845: E/AndroidRuntime(806): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023) 

任何想法?

+1

什麼是21號線? – Ahmad

+0

哪一行是數字21,這顯然是導致錯誤 – Nickolaus

+0

第21行是一個評論,這是在comments.I仍然無法找到什麼問題 –

回答

2

您正試圖在不初始化的情況下使用變量datab。在這裏:

Cursor c=datab.query(DatabaseHelper.DATABASE_TABLE, new String[]{DatabaseHelper.KEY_ALERT,DatabaseHelper.KEY_TRIGGER}, null, null,null,null,String.format("%s", DatabaseHelper.KEY_ALERT)); 
+0

應該是正確的沒有看到, – Nickolaus

+0

你能請告訴我如何解決這個問題 –

+0

我使用datab = db.getReadableDatabase()來初始化它。 但它仍然顯示我同樣的錯誤,並說上述初始化不正確 –