Android: Kontextmenü bei Einzelklick

Ich habe eine Absicht, die eine ListActivity erweitert. In meiner onCreate Methode, nachdem ich den onCreate habe, verwende ich registerForContextMenu(getListView()); Um sich für ein Kontextmenü zu registrieren.

Jetzt funktioniert es und das Kontextmenü hat seine ursprüngliche Funktion, die ist; Sobald ich mich anklicke und gedrückt hält, öffnet sich das Kontextmenü.

  • Android Ripple Hintergrundfarbe
  • Unterlauf in Wiederherstellung in Android 4.3
  • Herausfinden, ob die Statusleiste oben oder unten ist?
  • Fehler beim Start von AVD mit AMD-Prozessor
  • Retrofit 2: responseBodyConverter wandelt in Nullobjekt um
  • Wie kann ich eine AsyncTask während der Bildschirmdrehung behandeln?
  • Kann ich das Kontextmenü auf einen einzigen Klick öffnen (ohne die Liste zu halten)?

    Alle Hilfe wird geschätzt.

  • Android Intent Kontext Verwirrend
  • Wie kann man eine TCP-Verbindung auf unbestimmte Zeit aufbauen?
  • Android - Wert in strings.xml ändern
  • Ändern Sie den Hintergrund von LinearLayout in Android
  • Ausnahme im Thread "main" java.lang.NoClassDefFoundError: junit / textui / ErgebnisPrinter
  • Wo finden Sie Benutzer installierte Zertifikat Android 4.0 und up
  • 4 Solutions collect form web for “Android: Kontextmenü bei Einzelklick”

    Call activity.openContextMenu(l) onitem Klickereignis zum Öffnen von Kontextmenü auf Einzelklick und onLongClick call activity.closeContextMenu()

    Beispiel

     import android.app.Activity; import android.app.ListActivity; import android.content.res.Configuration; import android.os.Bundle; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemLongClickListener; import android.widget.ArrayAdapter; import android.widget.ListView; public class MyListView extends ListActivity implements OnItemLongClickListener { /** Called when the activity is first created. */ Activity activity = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); activity = this; ArrayAdapter arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, PENS); setListAdapter(arrayAdapter); getListView().setTextFilterEnabled(true); ListView lv = getListView(); this.registerForContextMenu(lv); lv.setOnItemLongClickListener(this); } @Override public void onConfigurationChanged(Configuration newConfig) { // TODO Auto-generated method stub super.onConfigurationChanged(newConfig); System.out.println("...11configuration is changed..."); } static final String[] PENS = new String[]{ "MONT Blanc", "Gucci", "Parker", "Sailor", "Porsche Design", "item1", "item2", "item3", "item4", "item5", "item6", "item7", "item8", "item9", "item10", "item11" }; protected void onListItemClick(ListView l, View v, int position, long id) { super.onListItemClick(l, v, position, id); activity.openContextMenu(l); System.out.println("...context is called"); } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { // TODO Auto-generated method stub System.out.println("...on create context menu..."); super.onCreateContextMenu(menu, v, menuInfo); } public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { System.out.println("...on long click close context menu..."); activity.closeContextMenu(); // TODO Auto-generated method stub return false; } 

    Hier ist ein weiterer einfacher Weg, um Kontextmenü mit einem einzigen Klick zu zeigen.

     private void addOnClickListener() { contactList.setOnItemClickListener(new AdapterView.OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View view, int position, long id) { view.showContextMenu(); } }) } 

    Ersetzen Sie contactList durch Ihre ListView und stellen Sie sicher, dass Sie diese Methode nach der Initialisierung von ListView .

    Ich glaube nicht, dass es reibungslos funktioniert. Das Aufrufen von openContextMenu(l) wird dazu führen, dass item.getMenuInfo() null ist (inside-Methode onContextItemSelected(MenuItem item) ).

    Sie sollten l.showContextMenuForChild(v) anstelle von openContextMenu(l) .

    Diese Arbeit perfekt ….

      listmp3 = (ListView) findViewById(R.id.results_mp3); registerForContextMenu(listmp3); listmp3.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { listmp3.showContextMenuForChild(view); } }); 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.