2013-08-24 40 views
0

我在Android上有一个应用程序,ContextMenu Button返回Android禁用点击

此应用程序有一个ListView与此事件。

ListView titulos = (ListView)findViewById(R.id.lv_titulos); 
    titulos.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, 
           int position, long id) { 
      position_item_selected = position; 
      switch (position){ 
       case 0: 
        titulo = getString(R.string.Brands); 
        menu_contextual = rellenar_menu_contextual(brands); 
        break; 
       case 1: 
        titulo = getString(R.string.Collections); 
        menu_contextual = rellenar_menu_contextual(collections); 
        break; 
       case 2: 
        titulo = getString(R.string.References); 
        menu_contextual = rellenar_menu_contextual(references); 
        break; 
       case 3: 
        titulo = getString(R.string.Colours); 
        menu_contextual = rellenar_menu_contextual(colours); 
        break; 
       case 4: 
        titulo = getString(R.string.Sizes); 
        menu_contextual = rellenar_menu_contextual(sizes); 
        break; 
      } 
      registerForContextMenu(view); 
      openContextMenu(view); 
      unregisterForContextMenu(view); 
     } 
    }); 

如果您在列表视图中单击项目,然后单击在文本菜单,它显示项目,但如果u点击在列表视图中的项目,然后,当显示上下文菜单,如果u能正常工作点击后退按钮,并返回查看,你不能再次点击列表视图中的项目。

如果你点击其他项目,并点击上下文菜单中的某个项目,所有项目再次正常工作。

@Override 
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { 
    super.onCreateContextMenu(menu, v, menuInfo); 
    menu.setHeaderTitle(titulo); 
    for (String aMenu_contextual : menu_contextual) menu.add(0, v.getId(), 0, aMenu_contextual); 
} 

@Override 
public boolean onContextItemSelected(MenuItem item) { 
    AdapterView.AdapterContextMenuInfo info = 
      (AdapterView.AdapterContextMenuInfo) item.getMenuInfo(); 
    String[][] values; 
    switch (position_item_selected){ 
     case 0: 
      values = new String[][] {{getString(R.string.Brand),item.toString()}}; 
      brandSelec = item.toString(); 
      collections(brands.get(item.toString()).toString()); 
      break; 
     (...) 
     default: 
      values = new String[][] {}; 
    } 
    final StableArrayAdapter adapter = new StableArrayAdapter(SearchArticle.this,values); 
    ListView titulos = (ListView)findViewById(R.id.lv_titulos); 
    titulos.setAdapter(adapter); 
    return true; 
} 

为什么当你在上下文菜单中按下按钮时,项目在列表视图中阻塞?

对不起,我英语不好,谢谢你。

回答

0

这个代码是有问题的一部分:

registerForContextMenu(view); 
openContextMenu(view); 
unregisterForContextMenu(view); 

不仅你注册,然后注销,但在列表中的项目点击,当你做到这一点。

我不明白你想对到这里是什么,但这是正确的方法:

... onCreate() { 
... 
registerForContextMenu(listView); 

这种方式,在项目上点击长将显示上下文菜单,就像它是如何工作的任何其他应用。