2012-10-25 50 views
2

我需要onContextItemSelected()中某個項目的ID。我使用下面的代碼:如何檢索onContextItemSelected()中的ID

@Override 
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { 
    if (v.getId()==R.id.listView1) { 
     AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)menuInfo; 
     menu.setHeaderTitle("Optionen"); 
     menu.add(Menu.NONE, info.position, 0, "Artikel entfernen"); 
    } 
} 

@Override 
public boolean onContextItemSelected(MenuItem item) {  
    final ListView lv = (ListView)findViewById(R.id.listView1); 
    Toast.makeText(getApplicationContext(), lv.getItemAtPosition(item.getItemId()).toString(), Toast.LENGTH_LONG).show(); 
    return true; 
} 

info.position VAR無法從onContextItemSelecteditem.getItemId閱讀!該應用程序與日誌崩潰:字符串空。你能找到一個錯誤嗎?謝謝!

UPDATE 我改變了代碼:

@Override 
public void onCreateContextMenu(ContextMenu menu, View v, 
    ContextMenuInfo menuInfo) { 
    if (v.getId()==R.id.listView1) { 
    AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)menuInfo; 
    menu.setHeaderTitle("Optionen"); 
    menu.add(Menu.NONE, info.position, 0, "delete post"); 
    } 
} 

@Override 
public boolean onContextItemSelected(MenuItem item) { 

    final ListView lv = (ListView)findViewById(R.id.listView1); 
    //lv.getItemAtPosition(0).toString() 


    AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)item.getMenuInfo(); 


    Toast.makeText(getApplicationContext(), info.position, Toast.LENGTH_LONG).show(); 
    //Toast.makeText(getApplicationContext(), lv.getItemAtPosition(item.getItemId()).toString(), Toast.LENGTH_LONG).show(); 


    return true; 
} 

而且這個代碼不起作用(NotFoundException)。我有一個listview(R.id.listView1)與項目。如果用戶長時間點擊一個項目,則出現上下文菜單。有「刪除帖子」選項。然後我需要帖子中的ID來刪除它!

還有其他解決方案嗎?

更新2 我解決了這個問題:

Toast.makeText(getApplicationContext(), lv.getItemAtPosition(info.position).toString(), Toast.LENGTH_LONG).show(); 

回答

2

info.id將與在AdapterView給定項目相關聯的id值。

onContextItemSelected()獲得在info,使用方法:

AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)item.getMenuInfo(); 

另外,還要注意上下文菜單變得更受歡迎,有利於操作模式(也叫做上下文的動作條)與動作吧。

+0

我更新了代碼。但它不起作用。此外,我添加了一些解釋。謝謝。 「 – user1756209

+0

@ user1756209:」但是這段代碼也不起作用(NotFoundException)「 - 您正在嘗試使用帶有隨機ID的字符串資源顯示」Toast「。這是行不通的。如果你的目標是顯示一個'Toast',它的消息恰好是一個'int',你需要將這個'int'轉換爲'String',這樣Android不會將你的'int'當作字符串資源ID。此外,您詢問「來自帖子的ID」,但您正在檢查「info.position」,而不是「info.id」,正如我在答案中指出的那樣。 – CommonsWare

+0

非常感謝!我解決了這個問題。 – user1756209