3
我需要幫助。 我有一個ListView與自定義適配器,當在此ListView中我有一個複選框,並在onClick方法應更新我的數據庫中的表。 我的onClick我的CheckBox的方法在我的適配器類實現的,而當我點擊一些複選框,我打電話給我的其他類中的方法時創建我的ListView。openOrCreateDatabase不起作用
以我適配器CLASSE
#chkQuitado.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
CheckBox cb = (CheckBox) v;
ViewMovimentos vm = new ViewMovimentos();
int movId = Integer.parseInt(entry.getMovId());
if(cb.isChecked()){
vm.confirmaQuitacao(context, movId); //Implementada na classe ViewMovimentos
}else{
vm.desfazQuitacao(context, movId); //Implementada na classe ViewMovimentos
}
}
});
#
以我Movimentos.class我實現我的方法confirmaQuitacao()和desfazQuitacao()
#public void confirmaQuitacao(Context context, final int movId){
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setMessage("Confirma a quitação deste movimento?");
builder.setPositiveButton("Sim", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
quitaMovimento(movId, MOV_FECHADO);
}
});
builder.setNeutralButton("Não", null);
builder.setTitle("Aviso");
builder.show();
}
public void desfazQuitacao(Context context, final int movId){
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setMessage("Deseja marcar esse movimento como não quitado?");
builder.setPositiveButton("Sim", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
quitaMovimento(movId, MOV_ABERTO);
}
});
builder.setNeutralButton("Não", null);
builder.setTitle("Aviso");
builder.show();
}
#
當這兩個方法調用quitaMovimento方法時。
#public void quitaMovimento(int movId, int quitar){
SQLiteDatabase banco = openOrCreateDatabase(nmBanco, MODE_WORLD_WRITEABLE, null);
ContentValues camposPar = new ContentValues();
camposPar.put("movQuitado", quitar);
banco.update("movimentos", camposPar, "movId = "+movId, null);
localizaRegistros();
}
#
所以,當我打電話openOrCreateDatabase()在我的應用程序發生密切力,和logcat的出現如下圖所示的錯誤。
#02-14 22:47:33.645: E/AndroidRuntime(367): Uncaught handler: thread main exiting due to uncaught exception
02-14 22:47:33.749: E/AndroidRuntime(367): java.lang.NullPointerException
02-14 22:47:33.749: E/AndroidRuntime(367): at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:193)
02-14 22:47:33.749: E/AndroidRuntime(367): at com.simpatico.sgf.ViewMovimentos.quitaMovimento(ViewMovimentos.java:433)
02-14 22:47:33.749: E/AndroidRuntime(367): at com.simpatico.sgf.ViewMovimentos$7.onClick(ViewMovimentos.java:450)
02-14 22:47:33.749: E/AndroidRuntime(367): at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:158)
02-14 22:47:33.749: E/AndroidRuntime(367): at android.os.Handler.dispatchMessage(Handler.java:99)
02-14 22:47:33.749: E/AndroidRuntime(367): at android.os.Looper.loop(Looper.java:123)
02-14 22:47:33.749: E/AndroidRuntime(367): at android.app.ActivityThread.main(ActivityThread.java:4363)
02-14 22:47:33.749: E/AndroidRuntime(367): at java.lang.reflect.Method.invokeNative(Native Method)
02-14 22:47:33.749: E/AndroidRuntime(367): at java.lang.reflect.Method.invoke(Method.java:521)
02-14 22:47:33.749: E/AndroidRuntime(367): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
02-14 22:47:33.749: E/AndroidRuntime(367): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
02-14 22:47:33.749: E/AndroidRuntime(367): at dalvik.system.NativeStart.main(Native Method)
#
有人可以幫我解決這個問題?
感謝的
你可以看到有一個'NullPointerException'這意味着你要麼提供了錯誤的參數或您的ContextWrapper爲空。你的數據庫類是否擴展了SQLiteDatabase類?也許你應該使用'openOrCreateDatabase(字符串路徑,SQLiteDatabase.CursorFactory廠)',而不是'openOrCreateDatabase(字符串路徑,SQLiteDatabase.CursorFactory工廠,DatabaseErrorHandler的ErrorHandler)' – 2012-02-15 12:21:26
抱歉,但你在西班牙語中的代碼不可讀。你應該用英文寫。這對其他人來說是最容易調試的。 – damson 2012-02-15 12:26:05
你在哪裏設置nmBanco? – Sparky 2012-02-15 12:33:31