【发布时间】:2012-04-15 18:35:32
【问题描述】:
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.context_menu, menu);
}
public boolean onContextItemSelected(MenuItem item) {
//AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
//String[] names = getResources().getStringArray(R.array.names);
switch(item.getItemId())
{
case R.id.viewData:
{ Intent r=new Intent(Database.this,MainMenu.class);
startActivity(r);
return true;
}
case R.id.DelData:
{
AdapterView.AdapterContextMenuInfo info1=
(AdapterView.AdapterContextMenuInfo)item.getMenuInfo();
delete(info1.id);
return true;
}
}
return(super.onOptionsItemSelected(item));
}
private void delete(final long rowId) {
if (rowId>0) {
new AlertDialog.Builder(this)
.setTitle(R.string.delete_title)
.setPositiveButton(R.string.ok,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {
processDelete(rowId);
}
})
.setNegativeButton(R.string.cancel,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {
// ignore, just dismiss
}
})
.show();
}
}
private void processDelete(long rowId) {
String[] args={String.valueOf(rowId)};
//DatabaseHelper dbh = new DatabaseHelper(this);
dbh.getWritableDatabase().delete("mygrades", "_ID=?", args);
c.requery();
}
我正在从表名为 mygrades 的数据库中删除行。有一个 contextMenu 我有两个选项查看和删除。当我按下删除程序停止。错误日志显示我对 processDelete(long rowId) 有疑问。我的论点是否以正确的方式通过?我将在下面发布错误日志:-
04-02 03:38:29.450: W/dalvikvm(541): threadid=1: thread exiting with uncaught exception (group=0x409c01f8)
04-02 03:38:29.489: E/AndroidRuntime(541): FATAL EXCEPTION: main
04-02 03:38:29.489: E/AndroidRuntime(541): java.lang.NullPointerException
04-02 03:38:29.489: E/AndroidRuntime(541): at nidhin.survey.Database.processDelete(Database.java:139)
04-02 03:38:29.489: E/AndroidRuntime(541): at nidhin.survey.Database.access$0(Database.java:135)
04-02 03:38:29.489: E/AndroidRuntime(541): at nidhin.survey.Database$1.onClick(Database.java:121)
04-02 03:38:29.489: E/AndroidRuntime(541): at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:166)
04-02 03:38:29.489: E/AndroidRuntime(541): at android.os.Handler.dispatchMessage(Handler.java:99)
04-02 03:38:29.489: E/AndroidRuntime(541): at android.os.Looper.loop(Looper.java:137)
04-02 03:38:29.489: E/AndroidRuntime(541): at android.app.ActivityThread.main(ActivityThread.java:4424)
04-02 03:38:29.489: E/AndroidRuntime(541): at java.lang.reflect.Method.invokeNative(Native Method)
04-02 03:38:29.489: E/AndroidRuntime(541): at java.lang.reflect.Method.invoke(Method.java:511)
04-02 03:38:29.489: E/AndroidRuntime(541): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
04-02 03:38:29.489: E/AndroidRuntime(541): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
04-02 03:38:29.489: E/AndroidRuntime(541): at dalvik.system.NativeStart.main(Native Method)
04-02 03:38:32.388: I/Process(541): Sending signal. PID: 541 SIG: 9
04-02 03:39:09.788: D/dalvikvm(586): GC_FOR_ALLOC freed 66K, 4% free 9065K/9347K, paused 82ms
04-02 03:39:09.788: I/dalvikvm-heap(586): Grow heap (frag case) to 9.452MB for 556016-byte allocation
04-02 03:39:09.930: D/dalvikvm(586): GC_CONCURRENT freed <1K, 4% free 9607K/9927K, paused 5ms+5ms
04-02 03:39:10.259: D/gralloc_goldfish(586): Emulator without GPU emulation detected.
【问题讨论】:
-
你在第 139 行有一个空指针异常。尝试使用一些日志语句来查看它为什么为空。
-
我该怎么做?你的意思是调试?
标签: android database delete-row