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無法從onContextItemSelected
與item.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();
我更新了代碼。但它不起作用。此外,我添加了一些解釋。謝謝。 「 – user1756209
@ user1756209:」但是這段代碼也不起作用(NotFoundException)「 - 您正在嘗試使用帶有隨機ID的字符串資源顯示」Toast「。這是行不通的。如果你的目標是顯示一個'Toast',它的消息恰好是一個'int',你需要將這個'int'轉換爲'String',這樣Android不會將你的'int'當作字符串資源ID。此外,您詢問「來自帖子的ID」,但您正在檢查「info.position」,而不是「info.id」,正如我在答案中指出的那樣。 – CommonsWare
非常感謝!我解決了這個問題。 – user1756209