2012-10-25 3 views
2

onContextItemSelected()에있는 항목의 ID가 필요합니다. info.position var에 item.getItemIdonContextItemSelected에서 읽을 수 없습니다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(); 

답변

2

info.idAdapterView에서 주어진 항목과 연관된 값 id 것이다 : 2

UPDATE는 그 문제를 해결했다.

onContextItemSelected()info에서 얻으려면 사용

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

, 그 상황에 맞는 메뉴가 작업 표시 줄에 액션 모드 (일명, 상황에 맞는 액션 바)에 찬성, 훨씬 적은 인기를 끌고있다 있습니다.

+0

코드를 업데이트했습니다. 그러나 그것은 효과가 없습니다. 게다가, 나는 약간의 설명을 추가했다. 감사. – user1756209

+0

@ user1756209 : "하지만이 코드는 작동하지 않습니다 (NotFoundException)"- 임의의 ID를 가진 문자열 리소스를 사용하여'Toast'를 표시하려고합니다. 그것은 작동하지 않을 것입니다. 메시지가'int' 인'Toast'를 표시하려는 경우,'int'를 문자열 리소스 ID로 처리하지 않도록'int'를'String'으로 변환해야합니다. 더구나, 당신은 "게시물의 ID"에 대해 물어 보았습니다. 그렇지만 여러분은 제가 대답에서 지적한대로'info.id' 대신에'info.position'을 조사하고 있습니다. – CommonsWare

+0

고마워요! 나는 그 문제를 해결했다. – user1756209

관련 문제