Contextmenü über Optionmenü öffnen

  • Hallo zusammen,


    ich beschäftige mich seit einigen Tagen mit der Entwicklung von Apps für Android und bin dabei ein erstes Programm zu schreiben.


    Ich stehe derzeit vor folgenden Problem, welches ich nicht selbst Lösen konnte:
    Es soll ein Contextmenü geöffnet werden, wenn ein bestimmter Button im Optionsmenü gedrückt wird.


    Ich habe es mit der Methode openContextMenu() probiert, doch weiß ich nicht welches Viewelement ich übergeben muss.
    Kann mir jemand sagen, was ich übergeben muss oder wie ich sonst das Contextmenü öffnen kann?


    Grüße,
    Beware

  • Na dein View. ;)


    Die Frage ist, wo genau du openContextMenu() aufrufen möchtest.
    Im Allgemeinen solltest du das beim OnLongClickListener() deines Views machen.
    Dieser hat als zu überschreibende Methode nur

    Java
    onLongClick(View v);


    Also dürfte klar sein, welches View du übergeben musst.


    Wenn du nicht über einen LongClickListener arbeitest (dürfte beim Menü nicht gehen), dann musst du etwas tricksen.
    (Wobei ContextMenüs nur über einen LongClick geöffnet werden sollten und Menüs nicht als Auswahlfeld für ein Untermenü vorgesehen sind)


    menuItem.getActionView() wäre zum Beispiel eine Möglichkeit, an ein View zu kommen.

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

  • bezieht sich ein Contextmenu i.d.R. nicht auf ein bestimmtes View in der Activity?
    Was genau ist denn das ziehl deines Vorgehens, soll bei jedem Punkt im Optionsmenu ein anderes Contextmenu geöffnet werden, oder immer das selbe?

    Bei Unklarheiten, halten Sie Ihren Kopf kurz in eine Schüssel voll klarem Wasser, dann wirds etwas klarer. Danke ;)


    Gruß Andi ---- Das Huhn oder das Ei zuerst? ;)
    Funtik -- G+

  • Ein Button ist ein View und man kann ihm einen OnClickListener zuweisen. ;)

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

  • Ich verstehs noch nicht ganz, sorry.
    Mit folgendet Code bekomme ich ne NullPointer Exception bei der registrierung des ContextMenus.



    Code
    @Override
    	public void onCreateContextMenu(ContextMenu menu, View v,ContextMenu.ContextMenuInfo menuInfo) {
    		super.onCreateContextMenu(menu, v, menuInfo);
    		getMenuInflater().inflate(R.menu.secound_menu, menu);
    	}
  • Wie schon gesagt, ein Context Menu bezieht sich auf ein bestimmtes View, bzw. auf die Daten eines View's. (z.B. in einer ListeView) deshalb musst du bei openContextMenu(View view) eine View übergeben, mit der das ContextMenu dann arbeiten kann. Also eine View aus deiner Aktivity, in der Die Daten sind, mit denen du etwas machen möchtest...


    // Edit: Wenn dein ContextMenu unabhängig von einer View sein soll, dann solltest du vielleicht lieber einen Dialog Builder benutzen... Ich hatte bisher nur den AlertDialog Builder genutzt...


    http://developer.android.com/r…/AlertDialog.Builder.html

    Bei Unklarheiten, halten Sie Ihren Kopf kurz in eine Schüssel voll klarem Wasser, dann wirds etwas klarer. Danke ;)


    Gruß Andi ---- Das Huhn oder das Ei zuerst? ;)
    Funtik -- G+

    Einmal editiert, zuletzt von Funtik ()

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!