2011-08-27 7 views
0

내 응용 프로그램에는 ListView가 기본 레이아웃에 있습니다. ListView에있는Android : ContextMenu가 표시되지 않습니다.

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    app = (MyTallyKeeperApplication) getApplication(); 
    adapter = new TallyItemListAdapter(this, app.getTallyItems()); 
    setListAdapter(adapter); 
    registerForContextMenu(getListView()); 
} 

각 항목의 LinearLayout에서 상속 입력 TallyItemView이다 : 해당 활동에, 나는 내에서 onCreate에서 다음 있습니다. 나는 상황에 맞는 메뉴를 팽창하는 데 사용되는 코드는 다음과 같습니다 당신이 항목에 길게 누르면, 당신은 당신에게 해당 항목을 편집하거나 삭제할 수있는 옵션을 제공하는 컨텍스트 메뉴를 표시됩니다 이론적으로

@Override 
public void onCreateContextMenu(ContextMenu menu, View v, 
     ContextMenuInfo menuInfo) { 
    super.onCreateContextMenu(menu, v, menuInfo); 
    Log.i(MyTallyKeeperMain.class.getSimpleName(), "onCreateContextMenu"); 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.item_menu, menu); 
} 

. 그러나 항목을 길게 누르면 아무 것도 표시되지 않습니다. 해결 방법에 대한 의견이 있으십니까?

답변

8

목록에 초점을 맞출 수있는 항목이있는 경우 (확인란 등) 목록 행의 레이아웃에서 포커스 가능 구성 요소에 대해 이것을 포함하십시오.

android:focusable="false" 
+0

초점을 맞추려면 어떻게해야합니까? – tasomaniac

0

먼저 super.onCreateContextMenu(menu, v, menuInfo);을 시도해보십시오. Here is a sample projectListView과 함께 컨텍스트 메뉴의 사용을 보여줍니다.

+0

나는 그것을 옮겨 보았지만 행운이 없었다. 복합 컨트롤을 사용하면이 작업과 관련이 있습니까? – MissPiplup

+0

어떤 이유로 onCreateContextMenu가 호출되지 않은 것 같습니다. LogCat에 기록 된 로깅 정책이 LogCat에 나타나지 않기 때문에 확실합니다. – MissPiplup

+0

나는 내 코드를 좀 더 파고 들었고 컨텍스트 메뉴가 listview에 제대로 등록되지 않았다는 것을 발견했다. main.xml에 넣은 ListView의 ID는 @android : id/list입니다. registerForContextMenu (getListView())를 사용하면 효과가있었습니다. 나는 그것을 얻지 않는다. – MissPiplup

관련 문제