onContextItemSelected:单击的id不是好的

时间:2014-06-05 18:39:50

标签: android android-menu

我的代码中某处出现错误,因为当我点击上下文菜单中的某个项目时,它不会引用好的ID。

实际上,我按照“etat”字符串的值来扩展不同的菜单xml文件。

onCreateContextMenu:

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

        // Get the list
        ListView list = (ListView)v;

        // Get the list item position    
        AdapterContextMenuInfo info = (AdapterContextMenuInfo)menuInfo;
        int position = info.position;

        // Now you can do whatever.. (Example, load different menus for different items)
        Annonce ann = (Annonce) list.getItemAtPosition(position);
        String etat = ann.getEtat();
        MenuInflater inflater = getMenuInflater();

        if (etat.equalsIgnoreCase("confirm")) {
            inflater.inflate(R.menu.menu_confirm, menu);
        }
        else if (etat.equalsIgnoreCase("online")) {
            inflater.inflate(R.menu.menu_online, menu);
        }
        else if (etat.equalsIgnoreCase("offline")) {
            inflater.inflate(R.menu.menu_offline, menu);
        }


    }

onContextItemSelected 的代码:

@Override
    public boolean onContextItemSelected(MenuItem item) {
        AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
        int index = info.position;

        switch (item.getItemId()) {
            case R.id.menu_confirm_apercu:
                return true;
            case R.id.menu_confirm_supprimer:
                return true;
            case R.id.menu_online_apercu:
                return true;
            case R.id.menu_online_horsligne:
                return true;
            case R.id.menu_online_supprimer:
                return true;
            case R.id.menu_offline_apercu:
                return true;
            case R.id.menu_offline_putonline:
                return true;
            case R.id.menu_offline_supprimer:
                return true;
            default:
                return super.onContextItemSelected(item);
        }
    }

R.menu.menu_confirm:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/menu_confirm_apercu"
        android:orderInCategory="100"
        android:showAsAction="never"
        android:title="Aperçu de l'annonce"/>

    <item
        android:id="@+id/menu_confirm_supprimer"
        android:orderInCategory="100"
        android:showAsAction="never"
        android:title="Supprimer l'annonce"/>

</menu>

R.menu.menu_offline

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/menu_offline_apercu"
        android:orderInCategory="100"
        android:showAsAction="never"
        android:title="Aperçu de l'annonce"/>

    <item
        android:id="@+id/menu_offline_supprimer"
        android:orderInCategory="100"
        android:showAsAction="never"
        android:title="Supprimer l'annonce"/>

    <item
        android:id="@+id/menu_offline_putonline"
        android:orderInCategory="100"
        android:showAsAction="never"
        android:title="Remettre l'annonce en ligne"/>

</menu>

R.menu.menu_online:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/menu_online_apercu"
        android:orderInCategory="100"
        android:showAsAction="never"
        android:title="Aperçu de l'annonce"/>

    <item
        android:id="@+id/menu_online_supprimer"
        android:orderInCategory="100"
        android:showAsAction="never"
        android:title="Supprimer l'annonce"/>

    <item
        android:id="@+id/menu_online_horsligne"
        android:orderInCategory="100"
        android:showAsAction="never"
        android:title="Passer l'annonce hors ligne"/>

</menu>

0 个答案:

没有答案