onContextItemSelected()
에있는 항목의 ID가 필요합니다. info.position
var에 item.getItemId
와 onContextItemSelected
에서 읽을 수 없습니다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;
}
: 나는 다음과 같은 코드를 사용! 응용 프로그램 로그와 함께 추락 : 문자열이 비어. 실수를 찾을 수 있습니까? 감사!
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) 작동하지 않습니다. 목록보기 (R.id.listView1) 항목이 있습니다. 사용자가 항목을 오래 클릭하면 컨텍스트 메뉴가 나타납니다. '게시물 삭제'옵션이 있습니다. 그런 다음 게시물에서 ID를 삭제해야합니다!
다른 해결책이 있습니까?
Toast.makeText(getApplicationContext(), lv.getItemAtPosition(info.position).toString(), Toast.LENGTH_LONG).show();
코드를 업데이트했습니다. 그러나 그것은 효과가 없습니다. 게다가, 나는 약간의 설명을 추가했다. 감사. – user1756209
@ user1756209 : "하지만이 코드는 작동하지 않습니다 (NotFoundException)"- 임의의 ID를 가진 문자열 리소스를 사용하여'Toast'를 표시하려고합니다. 그것은 작동하지 않을 것입니다. 메시지가'int' 인'Toast'를 표시하려는 경우,'int'를 문자열 리소스 ID로 처리하지 않도록'int'를'String'으로 변환해야합니다. 더구나, 당신은 "게시물의 ID"에 대해 물어 보았습니다. 그렇지만 여러분은 제가 대답에서 지적한대로'info.id' 대신에'info.position'을 조사하고 있습니다. – CommonsWare
고마워요! 나는 그 문제를 해결했다. – user1756209