簡體   English   中英

contextMenu中所選項目的ID始終為0

[英]id of selected item from contextMenu is always 0

我不能讓這個工作,我看了很多帖子,我真的很絕望,因為我必須完成這個直到后天。 問題如下:

我有一個listView與數據庫中的條目。 可以長按它們來調用contextMenu。 在上下文菜單中,我可以刪除或編輯條目,為此,我需要所選項目的ID。

@Override
public void onCreateContextMenu(ContextMenu menu, View v,
                                ContextMenuInfo menuInfo) {
  super.onCreateContextMenu(menu, v, menuInfo);
  MenuInflater inflater2 = getMenuInflater();
  inflater2.inflate(R.menu.edit_grade_menu, menu);
}

@Override
public boolean onContextItemSelected(MenuItem item) {
  AdapterContextMenuInfo info =  (AdapterContextMenuInfo) item.getMenuInfo();
  int id = (int) info.id;
  switch (item.getItemId()) {
  case R.id.edit_grade:
    Intent i = new Intent(this, AddGradeActivity.class);
    i.putExtra(GradesDbAdapter.KEY_ROWID, linkSubject);

    // putExtra edit, so addGradeActivity knows it has to fill views with values to edit grade
    i.putExtra("edit", true);
    i.putExtra(GradesDbAdapter.KEY_GRADE, id);
    this.startActivity(i);
    finish();

    return true;
  case R.id.del_grade:
      myDbHelper.deleteGradeEntry(id, semester);
      // filldata to refresh listview
      fillData();
    return true;
  default:
    return super.onContextItemSelected(item);
  }
}

現在我的問題是,我從info獲得的這個id總是為0.它真的很奇怪,因為它在我更改布局之前已經工作了,我在同一個屏幕上的2個選項卡中運行了同樣的活動。 這可能是原因嗎?

我有同樣的問題。 它不是在實現ListView的上下文菜單/類中發生,而是在創建數據庫表,_id列期間發生。 使用此語法時:

db.execSQL("CREATE TABLE TABLE_NAME(_id INTEGER AUTO INCREMENT PRIMARY KEY,  TITLE TEXT, VALUE REAL);");

AdapterView.AdapterContextMenuInfo.id始終返回0

但是,如果使用此語法:

db.execSQL("CREATE TABLE TABLE_NAME(_id INTEGER PRIMARY KEY AUTOINCREMENT,  TITLE TEXT, VALUE REAL);");

AdapterView.AdapterContextMenuInfo.id始終返回正確的id。

所以有區別:

_id INTEGER AUTO INCREMENT PRIMARY KEY 

_id INTEGER PRIMARY KEY AUTOINCREMENT

第二部作品,首先不是。 調試的難點在於兩者在語法上都是正確的。

另一個重要的事情是,在重新運行應用程序之前,需要通過adb終端從應用程序中刪除數據庫對象,因為如果數據庫已經存在,那么擴展SQLiteOpenHelper的類的onCreate方法不會觸發 - 只有當它不存在時才會觸發,所以在進行更正后刪除數據庫很重要,然后重新運行應用程序。

我希望有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM