私のアプリはデータベースアプリケーションの挿入/更新/削除/表示です。これまでのInsert部分の開発に成功しましたが、データベースの内容を表示しようとするとアプリケーションがクラッシュしますが、正常に構築されます。データを表示するとSQLiteアプリケーションがクラッシュする
私はDatabaseHelperという別個のアクティビティを1つ持ち、もう1つはActionDialogでデータを表示するアクティビティです。
私はMainActivityに
DatabaseHelper.java
public DatabaseHelper (Context context) {
super (context, DATABASE_NAME, null, 1);
//SQLiteDatabase db = this.getWritableDatabase();
}
...
public Cursor getAllData(){
SQLiteDatabase db = this.getWritableDatabase();
Cursor res = db.rawQuery("SELECT * FROM "+TABLE_NAME, null);
return res;
}
とActivity.java
ある "表示データ" ボタンを押したときにそれがクラッシュprotected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pregled);
buttonPregled = (Button)findViewById(R.id.BtnPregled);
viewAll();
}
//
public void viewAll(){
buttonPregled.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Cursor res = myDb.getAllData();
if(res.getCount() == 0){
//show message
showMessage("Error", "Table empty");
return;
}
StringBuffer buffer = new StringBuffer();
while (res.moveToNext()){
buffer.append("ID:"+ res.getString(0)+"\n");
buffer.append("Naslov:"+ res.getString(1)+"\n");
buffer.append("Datum:"+ res.getString(2)+"\n");
buffer.append("Kontakt osoba:"+ res.getString(3)+"\n");
buffer.append("Kontakt broj:"+ res.getString(4)+"\n");
buffer.append("Lokacija:"+ res.getString(5)+"\n");
buffer.append("Pogodba:"+ res.getString(6)+"\n");
buffer.append("Zarada:"+ res.getString(7)+"\n\n");
}
//Show all data
showMessage("Svirke", buffer.toString());
}
});
}
public void showMessage (String title, String Message){
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setCancelable(true);
builder.setTitle(title);
builder.setMessage(Message);
builder.show();
}
SあなたのDBが正しく、この作品がそうする前に、これはあなたのDBを初期化しない初期化されている場合は
Cursor res = myDb.getAllData();
res.moveToFirst(); // OR you can also write res.moveToPosition(0);
if(res.getCount() == 0)
{
//show message
showMessage("Error", "Table empty");
return;
}
:タックトレース
05-09 15:20:07.935 4137-4137/com.example.vramba.evis17 E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.vramba.evis17, PID: 4137
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.vramba.evis17/com.example.vramba.evis17.PregledActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2702)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2767)
at android.app.ActivityThread.access$900(ActivityThread.java:177)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1449)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:5951)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1400)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1195)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
at com.example.vramba.evis17.PregledActivity.viewAll(PregledActivity.java:25)
at com.example.vramba.evis17.PregledActivity.onCreate(PregledActivity.java:20)
at android.app.Activity.performCreate(Activity.java:6289)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2655)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2767)
at android.app.ActivityThread.access$900(ActivityThread.java:177)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1449)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:5951)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1400)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1195)
ここにスタックトレースを入れよう –
コードのどの部分がクラッシュしたかわからない場合、どうすればお手伝いできますか? – Denny
@LuizFernandoSalvaterraどのようにすれば、どこで正確に見つけることができますか? –