2017-11-29 5 views
-2

Ich kann Menù nicht in meiner Hauptaktivität und allen anderen Aktivitäten anzeigen. Das ist mein main.xml:OnCreateOptionMenu wird nie aufgerufen

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    xmlns:card_view="http://schemas.android.com/apk/res-auto" 
    android:orientation="vertical" 
    android:background="@color/cardview_dark_background"> 
    <android.support.v7.widget.CardView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_margin="5dp" 
     card_view:cardBackgroundColor="@color/cardview_light_background"> 

     <LinearLayout 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content"> 
      <ImageButton 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:src="@drawable/articoli" 
       android:onClick="visualizzaArticoli" 
       android:background="@null"/> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Articoli" 
       android:layout_gravity="center_vertical" 
       android:layout_marginLeft="50dp"/> 
     </LinearLayout> 
    </android.support.v7.widget.CardView> 
</LinearLayout> 

Das ist mein main.java Datei:

package com.mcsolution.easymanagementandroid.main; 

import android.app.Activity; 
import android.app.ProgressDialog; 
import android.content.Intent; 
import android.content.pm.PackageManager; 
import android.content.pm.ResolveInfo; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuInflater; 
import android.view.View; 
import android.widget.Toast; 

import com.mcsolution.easymanagementandroid.R; 
import com.mcsolution.easymanagementandroid.beans.Program; 
import com.mcsolution.easymanagementandroid.connection.MyDatabase; 
import com.mcsolution.easymanagementandroid.utility.SyncDati; 

public class Main extends Activity { 
    public MyDatabase db; 
    public ProgressDialog dialog; 
    public String url=""; 
    private static final Intent SCAN_INTENT = new Intent("com.google.zxing.client.android.SCAN"); 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    } 
     @Override 
     public boolean onCreateOptionsMenu(Menu menu) { 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.care_home, menu); 
     return super.onCreateOptionsMenu(menu); 
     } 
    private void apriConnessioneDB(){ 
     db=new MyDatabase(getApplicationContext()); 
     db.open(); //apriamo il db 
    } 
    public void visualizzaArticoli(View view){ 
     Intent intent = new Intent(this, com.mcsolution.easymanagementandroid.articoli.viewArticoli.class); 
     startActivity(intent); 
    } 
} 

Das ist mein Menü care_home.xml:

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item 
     android:id="@+id/action_settings" 
     android:orderInCategory="100" 
     android:title="@string/action_settings"/> 
    <item 
     android:id="@+id/action_logout" 
     android:orderInCategory="100" 
     android:title="Logout"/> 
</menu> 

Wenn ich versuche, meine Anwendung zu starten Ich habe keinen Fehler, aber ich kann MenuBar nicht sehen. Ich habe versucht, einen Debug-Punkt in OnCreateOptionMenu Methode zu setzen, aber die Methode wird nie aufgerufen. Wie kann ich es reparieren?

+0

Sie müssen 'true;' von 'onCreateOptionsMenu()' zurückgeben, damit Ihr Menü tatsächlich verwendet wird. Ich bin mir nicht sicher über dein Breakpoint-Problem. –

+0

Sie geben Super-Methodeninstanz in onCreateOptionsMenu zurück und geben nur true zurück. –

+0

Ich versuche, den gesamten Code zu verwenden, den wir geschrieben haben, aber das Menü wird nicht angezeigt. Es ist möglich, dass ich Android 6.0 verwendet habe und es eine andere Komponente gibt? – bircastri

Antwort

2

Sie müssen return true; in onCreateOptionsMenu() wie unten

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

Sie true zurückgeben sollte wie folgt statt Super im Code gezeigt:

@SuppressLint("RestrictedApi") 
@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.menu_main, menu); 
    if (menu != null) { 

    } 
    return true; 
} 

Hoffe, es hilft.

0

Sie haben beide Methoden auf Ihre Aktivität dieser

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

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 

      return super.onOptionsItemSelected(item);   
    } 
1

Verwenden Sie einfach zu verwenden:

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

Ihre Aktivitätsklasse Activity erstreckt sich AppCompatActivity nicht. Das Standardthema für diese Aktivitäten enthält keine Aktionsleiste, in der das Menü enthalten wäre. Sie müssen der Layoutdatei Ihrer Aktivität einen <Toolbar> hinzufügen und dann setActionBar() von Ihrer onCreate() Methode aufrufen.

Zum Beispiel, fügen Sie diese als erstes Kind von der obersten Ebene Ihres <LinearLayout> tag:

<Toolbar 
    android:id="@+id/toolbar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"/> 

Und fügen Sie einfach, nachdem Sie setContentView() in Ihrem onCreate() nennen:

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

Jetzt werden Sie Haben Sie eine Aktionsleiste in Ihrer Aktivität und Ihr Menü wird angezeigt.

Verwandte Themen