Android, So erstellen Sie ein Optionsmenü


73

Hier habe ich versucht, ein Optionsmenü zu erstellen, aber das Menü wird nicht auf dem Bildschirm angezeigt. Bitte führen Sie mich, wo ich Fehler mache ...

MenuTest.java

public class MenuTest extends Activity {
   @Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater=getMenuInflater();
    inflater.inflate(R.menu.more_tab_menu, menu);
    return super.onCreateOptionsMenu(menu);

}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch(item.getItemId())
    {
    case R.id.feeds:
        break;
    case R.id.friends:
        break;
    case R.id.about:
        break;
    }
    return true;
}
}

Und meine XML-Datei ist more_tab_menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu
xmlns:android="http://schemas.android.com/apk/res/android">
<item
    android:id="@+id/feeds"
    android:title="Feeds"/>
<item
    android:id="@+id/friends"
    android:title="Friends"/>
<item
    android:id="@+id/about"
    android:title="About"/>
</menu>

Bitte führen Sie mich,


Ist das der vollständige Aktivitätscode? Wo ist die onCreate-Methode?
Egor

Hast du menu buttonvom Emulator gedrückt?
Android

Ich habe auch die onCreate-Methode geschrieben, aber danach habe ich kein Menü auf dem Bildschirm erhalten.
Vishesh Chandra

Eine ausführlichere Erklärung erhalten Sie hier: youtu.be/dXDkESYSFhA
chandu vutukuri

Antworten:


80
public class MenuTest extends Activity {

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.more_tab_menu, menu);

        // return true so that the menu pop up is opened
        return true; 
    }
}

und vergessen Sie nicht, die Menütaste oder das Symbol am Emulator oder Gerät zu drücken


32

Bitte sehen Sie: ==

private int group1Id = 1;

int homeId = Menu.FIRST;
int profileId = Menu.FIRST +1;
int searchId = Menu.FIRST +2;
int dealsId = Menu.FIRST +3;
int helpId = Menu.FIRST +4;
int contactusId = Menu.FIRST +5;

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    menu.add(group1Id, homeId, homeId, "").setIcon(R.drawable.home_menu);
    menu.add(group1Id, profileId, profileId, "").setIcon(R.drawable.profile_menu);
    menu.add(group1Id, searchId, searchId, "").setIcon(R.drawable.search_menu);
    menu.add(group1Id, dealsId, dealsId, "").setIcon(R.drawable.deals_menu);
    menu.add(group1Id, helpId, helpId, "").setIcon(R.drawable.help_menu);
    menu.add(group1Id, contactusId, contactusId, "").setIcon(R.drawable.contactus_menu);

    return super.onCreateOptionsMenu(menu); 
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case 1:
        // write your code here
        Toast msg = Toast.makeText(MainHomeScreen.this, "Menu 1", Toast.LENGTH_LONG);
        msg.show();
        return true;

    case 2:
        // write your code here
        return true;

    case 3:
        // write your code here
        return true;

    case 4:
        // write your code here
        return true;

    case 5:
        // write your code here
        return true;

    case 6:
        // write your code here
        return true;

    default:
        return super.onOptionsItemSelected(item);
    }
}

12

Ändern Sie Ihre onCreateOptionsMenuMethode, um zurückzukehren true. So zitieren Sie die Dokumente :

Sie müssen true zurückgeben, damit das Menü angezeigt wird. Wenn Sie false zurückgeben, wird dies nicht angezeigt.


9
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    new MenuInflater(this).inflate(R.menu.folderview_options, menu);
    return (super.onCreateOptionsMenu(menu));
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    if (item.getItemId() == R.id.locationListRefreshLocations) {
        Cursor temp = helper.getEmployee(active_employeeId);
        String[] matches = new String[1];
        if (temp.moveToFirst()) {
            matches[0] = helper.getEmployerID(temp);
        }
        temp.close();               
        startRosterReceiveBackgroundTask(matches);
    } else if (item.getItemId()==R.id.locationListPrefs) {
        startActivity(new Intent(this, PreferencesUnlockScreen.class));
        return true;
    }           
    return super.onOptionsItemSelected(item);
}   

Die Option war mit dem Code unsichtbar. In onCreateOptionsMenu (Menü Menü) habe ich return (super.onCreateOptionsMenu (Menü)) geändert, um true zurückzugeben, das es sichtbar gemacht hat.
Dexter

5

Sie können ein Optionsmenü wie folgt erstellen:

Menü-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">

    <item
        android:id="@+id/Menu_AboutUs"
        android:icon="@drawable/ic_about_us_over_black"
        android:title="About US"/>
    <item
        android:id="@+id/Menu_LogOutMenu"
        android:icon="@drawable/ic_arrow_forward_black"
        android:title="Logout"/>
</menu>

So erhalten Sie das Menü aus MENU XML (Menü XML in Java konvertieren):

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.my_options_menu,menu);
        return super.onCreateOptionsMenu(menu);
    }

So erhalten Sie einen ausgewählten Artikel aus dem Menü:

@Override
    public boolean onOptionsItemSelected(@NonNull MenuItem item) {
        switch (item.getItemId()){

            case R.id.Menu_AboutUs:
                //About US
                break;

            case R.id.Menu_LogOutMenu:
                //Do Logout
                break;
        }
        return super.onOptionsItemSelected(item);
    }

3
import android.app.Activity;
import android.os.Bundle;
import android.view.*;
import android.widget.*;

public class AndroidWalkthroughApp2 extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // show menu when menu button is pressed
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.options_menu, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // display a message when a button was pressed
        String message = "";
        if (item.getItemId() == R.id.option1) {
            message = "You selected option 1!";
        }
        else if (item.getItemId() == R.id.option2) {
            message = "You selected option 2!";
        }
        else {
            message = "Why would you select that!?";
        }

        // show message via toast
        Toast toast = Toast.makeText(this, message, Toast.LENGTH_LONG);
        toast.show();

        return true;
    }
}

2

Ersetzen Sie return super.onCreateOptionsMenu (Menü); mit return true; in Ihrer onCreateOptionsMenu- Methode Dies wird helfen

Außerdem sollten Sie die onCreate- Methode in Ihrer Aktivität haben


0

Die vorherigen Antworten haben das traditionelle Menü in Android abgedeckt. Dies ist eine weitere Option, die Sie verwenden können, wenn Sie nach einer Alternative suchen

https://github.com/AnshulBansal/Android-Pulley-Menu

Das Riemenscheibenmenü ist eine Alternative zum herkömmlichen Menü, mit dem der Benutzer eine beliebige Option für eine Aktivität intuitiv auswählen kann. Das Menü wird durch Ziehen des Bildschirms nach unten angezeigt. In dieser Geste kann der Benutzer auch eine der Optionen auswählen.


0

Die Programmierung der Android-Benutzeroberfläche ist etwas schwierig. Um das Menü Optionen zu aktivieren, müssen wir zusätzlich zu dem von Ihnen geschriebenen Code in Ihrer Überschreibungsmethode OnCreate () setHasOptionsMenu (true) aufrufen. Hoffe das wird dir helfen.


Hier ist nichts schwierig. Wenn Sie keinen direkten Weg haben, gehen Sie zurück und studieren Sie mehr oder lesen Sie die offizielle Dokumentation und verstehen Sie gründlich.
Show Young Soyinka

0

Wenn auf Ihrem Gerät Android v.4.1.2 oder früher ausgeführt wird, wird
das Menü nicht in der Aktionsleiste angezeigt.
Der Zugriff erfolgt jedoch über die Menü- (Hardware-) Taste.


0

Guten Tag, ich wurde überprüft. Wenn Sie Leer wählen, haben Activity Sie keine eingebauten Menüfunktionen. Für Einbau müssen Sie Basic auswählen. Activity Auf diese Weise werden Sie ActivityausgeführtonCreateOptionsMenu

Oder wenn Sie in Leere Activityvon Anfang an arbeiten Chenge in styles.xmlder

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.