2012-05-30 2 views
0

저는 CustomListAdapter가 있습니다. 내 OnItemClickListener를 오버로드하고 표시된 컨텍스트 메뉴가있는 위치에 registerForContextMenu 줄을 추가했습니다.Android ListView ContextMenu가 나타나지 않습니다.

MenuItem을 표시 할 Item을 선택하면 메뉴가 표시됩니다. 전화의 뒤로 버튼을 누르면 메뉴가 사라집니다. 그러나 이제는 내 listview의 동일한 항목이 더 이상 OnItemClickListener를받지 못합니다. 내가 이해할 수 있니? 내 말은 메뉴가 사라진 후에도 동일한 항목에 클릭 수신기가 수신되지 않는다는 의미입니다. 위와 아래 항목은 원하는대로 이벤트를 수신합니다. 메뉴가 사라졌지만 여전히 클릭 이벤트를 잡는 것처럼 보입니다.

+2

여기에 몇 가지 코드를 입력하십시오. – Sajmon

+0

어디에서 registerForContextMenu를 호출합니까? 코드가 필요합니다. – mtmurdock

+0

OnItemClick 오버로드 된 함수에서이 함수를 호출합니다. 이메일 주소를 알려 주시면 파일을 보내 드리겠습니다? – AndroidDev

답변

0
 quickLinkListView.setOnItemClickListener(new OnItemClickListener() 
     { 
      @Override 
      public void onItemClick(AdapterView<?> a, View v, int position, long id) 
      { 

       Intent intent = new Intent(); 
       intent.setClassName(Home.this, "com.myapp.toc" + Constants.ACT_NAMES[position]); 

       if (position < 4 && position > 1) 
       { 

        switch (position) 
        { 

        case 3: 
         registerForContextMenu(v); 
         ViewHolder.v=v; 
         openContextMenu(v); 
         break; 
        } 
       } 

      } 
     }); 

public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) 
{ 
    super.onCreateContextMenu(menu, v, menuInfo); 

    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.context_home, menu); 
    menu.setHeaderTitle("Select Video Type"); 
} 
+0

상황에 맞는 메뉴가 처음으로 나타납니다. 다시 누르면 메뉴가 사라지지만 항목에는 두 번째로 클릭 이벤트가 수신되지 않습니다. – AndroidDev

+0

앞으로 추가 정보를 질문으로 게시하지 마십시오. 오히려 질문을 편집하고 원래 질문 다음에 추가 정보를 포함시켜야합니다. 이것은 StackOverflow의 Q & A 스타일을 유지하는 데 도움이됩니다 – mtmurdock

+0

Typo : * answer * – mtmurdock

1

좋지 않습니다. onCreate 방법으로 registerForContextMenu으로 전화해야합니다. ContextMenu을 만들 당신이 방법

@Override 
public void onCreateContextMenu(ContextMenu cMenu, View parent, ContextMenu.ContextMenuInfo info) { 
    this.contextMenu = cMenu; 
    new MenuInflater(Contacts.this).inflate(R.menu.conmenu, this.contextMenu); 
} 

선택 항목에 대한 onCreateContextMenuonContextItemSelected 방법 오버라이드 (override) 오버라이드 (override) 할 필요가

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.contacts); 
    registerForContextMenu(<yourListView>); 
    ... 
} 

을 :

그래서 이런 식으로 시도

@Override 
public boolean onContextItemSelected(MenuItem item) { 
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)  item.getMenuInfo(); 
    switch (item.getItemId()) { 
     case R.id.c_odobrat: 
     deleteContactDialog(info.id); 
     return true; 
    } 
    return false; 
} 

을 그리고 작동해야합니다.

관련 문제