我的代码中某处出现错误,因为当我点击上下文菜单中的某个项目时,它不会引用好的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>