Auswahlmenü erstellen

H

haner

Ambitioniertes Mitglied
0
Hallo,
ich bin absoluter Neuling und möchte mir ein Auswahlmenü in Form dieser drei Punkte in der Action Bar erstellen.
Eine .xml-Datei habe ich mir im res/menu Ordner angelegt und den entsprechenden Eintrag im styles.xml vorgenemmen.

Jetzt scheitert es aber an der mainActivity.java.
Das onCreateOptionsMenu wird mir rot unterstrichen mit dem Hinweis duplicate method. Ja, ich habe die Methode auch schonmal verwendet, um vorherige Einstellungen für eine andere App-Funktion vorzunehmen.
Was muss ich denn anders machen? Bin um jeden Hinweis dankbar.

@override
public boolean onCreateOptionsMenu(Menu menu) { //Menubutton
MenuInflator inflator = getMenuInflator();
inflator.inflate(R.menu.menu_auswahl, menu);
return true;
}
 
Java-Basic:

In jede Klasse ist jede Methode einzigartig. D.h. sie haben den gleichen Namen, und es werden an die Methode die gleiche Datentypen( oder keinen) übergeben
Wie soll sonst das System unterscheiden, welche Methode du meinst. Am besten fasst Du alles zusammen.

Mein Vorschlag: Nimm Dir ein Java-Buch und arbeite erst mal in Ruhe die Grundlagen durch.
 
Hallo,
habe bereits das Buch "Android App Entwicklung für Dummies" durchgearbeitet. Ich kann dazu leider aber nichts entnehmen. Dort heißt es nur man solle die Methoden in der .java-Datei erstellen.

Aus deiner Aussage schlussfolgere ich: In jeder Klasse darf/kann jede Methode nur einmal stehen.
1. Erstellt man dann also im bestehenden Projekt neben der MainActivity.java eine weitere .java-Datei und dort erstelle ich alle Methoden und sonstiges, die ich für mein Auswahlmenü benötige?
2. Oder erstelle ich in der MainActivity.java eine weitere Klasse. Diese, so wie ich bisher in verschieden Onlinebeiträgen entnehmen konnte, kann dann aber nicht mehr public sein. Treten dadurch irgendwelche Probleme auf? Ist diese dann nicht mehr sichtbar?

Danke für Eure Hilfe
VG haner
 
Ok, ja ein wenig kenne ich mich schon mit Java aus. Habe schonmal einen Anfäger Javaprogrammierungskurs belegt. Ist aber schon sehr lange her. In Android bin ich aber komplett neu.

Habe mir jetzt eine neue MainMenu.java erstellt.
Allerdings wird die setHasOptionsMenu(true) und getActivity() immer noch rot unterringelt. Warum? Habe ich vlt. irgendetwas nicht richtig eingebunden?

Code:
public class MainMenu extends Activity {

   [USER=3517]@override[/USER]
   protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setHasOptionsMenu(true);                 
   }

[USER=3517]@override[/USER]
   public boolean onCreateOptionsMenu(Menu menu) {           

     getMenuInflater().inflate(R.menu.main_menu, menu);
     return true;
   }

   [USER=3517]@override[/USER] 
   public boolean onOptionsItemSelected(MenuItem item) {       
     int id = item.getItemId();
     if (id == R.id.title_activity_main_menu) {
       Toast.makeText(getActivity(), "Blubb gedrückt", Toast.LENGTH_LONG).show();
     
       return true;
     }
     return super.onOptionsItemSelected(item);
   }

}
 
Zuletzt bearbeitet von einem Moderator:
Ok, das habe ich jetzt behoben. Danke.
Es werden jetzt zumindest mal keine Fehler mehr angezeigt. Trotzdem erscheint das Menü in Form der drei Punkte nicht.
Was mache ich denn noch falsch? Habe ich noch irgendetwas vergessen?

hier mal mein Code:

MainMenu.java


Code:
package com.project.ta.taschenlampe.app;

import com.project.ta.taschenlampe.R;
import android.app.Activity;
import android.app.Fragment;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MenuInflater;
import android.widget.Toast;

public class MainMenu extends Fragment {
   public MainMenu() {
   
   }
   [USER=3517]@override[/USER]
   public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setHasOptionsMenu(true);
   }

   [USER=3517]@override[/USER]
   public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.main_menu, menu);
   }

   [USER=3517]@override[/USER]
   public boolean onOptionsItemSelected(MenuItem item) {

    int id = item.getItemId();
    if (id == R.id.title_activity_main_menu) {
    Toast.makeText(getActivity(), "Blobb gedrückt!", Toast.LENGTH_LONG).show();

    return true;
    }
    return super.onOptionsItemSelected(item);
   }
}

strings.xml

Code:
<?xml version="1.0" encoding="utf-8"?>
<resources>

  <string name="app_name">Testapp</string>
  <string name="hello_world">Hello world!</string>
  <string name="action_settings">Settings</string>
  <string name="title_activity_main_menu">MainMenu</string>

</resources>

main_menu.xml

Code:
<?xml version="1.0" encoding="utf-8"?>

<menu xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  xmlns:tools="http://schemas.android.com/tools"
  tools:context="com.project.ta.taschenlampe.MainMenu" >

  <item
  android:id="@+id/title_activity_main_menu"
  android:title="@string/title_activity_main_menu"
  android:orderInCategory="100"
  app:showAsAction="never"/>

</menu>
 
Zuletzt bearbeitet von einem Moderator:
Hallo,

habe das Problem selbst lösen können.
Lag wohl am Emulator.
Direkt auf dem Smartphone funktioniert es.
Nochmal danke für die Hilfe.
 

Ähnliche Themen

5
Antworten
0
Aufrufe
1.142
586920
5
R
Antworten
6
Aufrufe
997
swa00
swa00
W
Antworten
2
Aufrufe
741
rene3006
R
Zurück
Oben Unten