Wie verwende ich das Kontextmenü in einer ListActivity auf Android?

Wie implementierst du ein Kontextmenü, das durch einen langen Klick ausgelöst wird, oder tippt auf eine ListActivity, die die eingebauten Layouts und einen ListAdapter verwendet?

  • Gibt es ein Äquivalent für die Abnutzung RemoteInput.setChoices, aber für das Telefon?
  • Implementiere mehrere Event-Listener im selben Fragment - Android
  • So stellen Sie die Höhe der Android-Fortschrittsanzeige ein?
  • GetExternalFilesDir Alternative in Android 2.1
  • Kann die Farbe des Spinner-Teilers nicht ändern
  • Wie kann ich eine Android-Anwendung beenden?
  • Android speichern Ansicht zu jpg oder png
  • Android: Parent Fragment eines verschachtelten Fragments
  • Ersetzen () funktioniert nicht richtig mit Multi-Fragmenten
  • Android richtig Ansatz: Wo JSON Antwort sollte analysiert werden - in UI Thread, oder in einem anderen?
  • N Level Expandable Listview
  • Programmierbar kollabieren oder erweitern CollapsingToolbarLayout
  • 3 Solutions collect form web for “Wie verwende ich das Kontextmenü in einer ListActivity auf Android?”

    Auf der onCreate-Methode rufen Sie registerForContextMenu wie folgt auf:

    registerForContextMenu(getListView()); 

    Und füllen Sie dann das Menü auf onCreateContextMenu (ContextMenu-Menü, View View, ContextMenuInfo menuInfo) . Das menuInfo-Argument kann Informationen darüber geben, welches Element auf diese Weise lange geklickt wurde:

     AdapterView.AdapterContextMenuInfo info; try { info = (AdapterView.AdapterContextMenuInfo) menuInfo; } catch (ClassCastException e) { Log.e(TAG, "bad menuInfo", e); return; } long id = getListAdapter().getItemId(info.position); 

    Und Sie fügen Menüpunkte in der üblichen Weise aufrufen menu.add :

     menu.add(0, MENU_ITEM_ID, 0, R.string.menu_string); 

    Und wenn der Benutzer eine Option wählt , wird onContextItemSelected aufgerufen. Auch onMenuItemSelected und diese Tatsache wird in der Dokumentation nicht explizit erklärt, außer dass Sie die andere Methode verwenden, um die Anrufe aus dem Kontextmenü zu erhalten. Nur bewusst sein, nicht teilen ids.

    Auf onContextItemSelected können Sie den MenuInfo erhalten und damit die ID des Elements, das durch den Aufruf von getMenuInfo () ausgewählt wurde :

     try { info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo(); } catch (ClassCastException e) { Log.e(TAG, "bad menuInfo", e); return false; } long id = getListAdapter().getItemId(info.position); 

    Sie sollten auch auf Activity.registerForContextMenu (Ansicht) schauen.

     listView = (ListView) findViewById(R.id.listpockets); registerForContextMenu(listView); public void onCreateContextMenu(android.view.ContextMenu menu, View v, android.view.ContextMenu.ContextMenuInfo menuInfo) { //AdapterContextMenuInfo info = (AdapterContextMenuInfo)menuInfo; menu.setHeaderTitle(getString(R.string.titleDelete)); menu.add(0, CommonUtil.CONTEXT_MENU__DELETE_ID, 0, getString(R.string.menuDelete)); }; @Override public boolean onContextItemSelected(MenuItem item) { if(item.getItemId() == CommonUtil.CONTEXT_MENU__DELETE_ID) { AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); long id = this.listView.getItemIdAtPosition(info.position); Log.d(TAG, "Item ID at POSITION:"+id); } else { return false; } return true; } 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.