web-dev-qa-db-fra.com

Android ne s'affiche pas

Je suis nouveau sur Android et j'ai essayé d'ajouter un simple bouton d'ajout comme mentionné ci-dessous

list_menu.xml

<menu xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item 
        Android:id="@+id/menu_insert"
        Android:icon="@Android:drawable/ic_menu_add"
        Android:title="@string/menu_insert"              
    />     
</menu>

MyActivity.Java

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        super.onCreateOptionsMenu(menu);
        getMenuInflater().inflate(R.menu.list_menu, menu);

        return true;  
    }

J'ai lu dans le livre de la série Dummies que ic_menu_add est déjà là dans les ressources et je n'ai pas besoin de l'ajouter, mais lorsque j'exécute ce code, il ne s'affiche pas. J'ai essayé d'ajouter une icône personnalisée avec le même nom, il n'y a toujours pas de bouton. Quelqu'un peut-il m'aider s'il vous plaît.

17
user3119647

Si vous utilisez un fragment, vous en aurez besoin dans onCreate ():

 @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setHasOptionsMenu(true);
    }
15
Roel

Je faisais face au même problème .. lire quelques requêtes et documentation .. J'espère que cela pourrait vous aider.

Voici mon fichier XML pour un menu ..

<item
    Android:id="@+id/action_send_feedback"
    Android:orderInCategory="100"
    Android:showAsAction="always"
    Android:title="@string/action_send_feedback"/>

<item 
    Android:id="@+id/action_share_app"
    Android:orderInCategory="100"
    Android:showAsAction="ifRoom"
    Android:title="@string/action_share_app"
    Android:icon="@drawable/ic_action_share" />

<item
    Android:id="@+id/action_rate_app"
    Android:orderInCategory="100"
    Android:showAsAction="never"
    Android:title="@string/action_rate_app"/>

Le code Java va ici ..

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

Pour Android téléphones qui ont un bouton d'option (en bas du téléphone), l'élément de menu qui est showAsAction = "jamais" vient quand le bouton est pressé .. ou bien ils seront affichés normalement sur le menu d'options de la barre d'actions.

Réf: http://developer.Android.com/guide/topics/ui/menus.html#options-men

9
RaiVikrant

Il n'est pas nécessaire d'appeler la méthode super(). Essayez de remplacer votre onCreateOptionsMenu pour cela:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.list_menu, menu);
    return true;
}
2
amatellanes

Si vous définissez votre TargetSDK dans le manifeste sur 5, l'icône apparaîtra.

Si vous ciblez un nouveau Android SDK (3.0 et plus), la barre d'action prend le contrôle du menu et par défaut n'affiche pas les icônes.

Vous pouvez essayer ceci:

Comment afficher les icônes dans le menu de débordement ActionBar?

1
MikeHelland

Pour moi, j'ai dû ajouter le code suivant à l'activité xml:

 <androidx.appcompat.widget.Toolbar
        Android:id="@+id/toolbar"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:background="@color/colorPrimary"
        Android:theme="@style/AppTheme"
        app:popupTheme="@style/Theme.AppCompat.Light.DarkActionBar"
        app:title="@string/app_name"
        app:titleMarginStart="24dp"
        app:titleTextColor="@Android:color/white" />

Puis à l'activité.Java: onCreate

Toolbar toolbar = findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

Et

    @Override
public boolean onCreateOptionsMenu(Menu menu) {
    //super.onCreateOptionsMenu(menu);
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

Et fragmentez surCréer:

 setHasOptionsMenu(true);
1
Bonfix Ngetich

J'ai fait face à ce problème. Mais dans mon cas, j'ai ajouté une barre d'outils à l'intérieur du Framelayout. En plus de cela, j'ai ajouté une autre vue de défilement avec le parent de correspondance. Maintenant, ScrollView a pris le contrôle des clics, pas la barre d'outils. Donc, si vous utilisez FrameLayout, votre barre d'outils suppose être la vue la plus haute.

0
Thirumalvalavan

Ajouter

app:showAsAction="always"

à menuitem.

0
harsh kumar

Avez-vous manqué une fois ces lignes dans votre vérification de fichier xml

xmlns: tools = "http://schemas.Android.com/tools"

tools: context = ". MainActivity"

si vous avez manqué c'est ce qui pose problème pour afficher le menu d'options

0
karthik kumar

Bonjour, le code ci-dessous vous aide:

    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="colorPrimary">@color/primary</item>
        <item name="colorPrimaryDark">@color/primaryDark</item>
    </style>

Veuillez mentionner DarkActionBar comme thème que vous avez utilisé dans Android Manifest File.

0
Jyubin Patel