永远不会调用OnCreateOptionMenu

时间:2017-11-29 12:05:09

标签: android android-optionsmenu

我无法在我的主要活动和所有其他活动中发送Menù。 这是我的main.xml

<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>

这是我的main.java文件:

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);
    }   
}

这是我的菜单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>

如果我尝试启动我的申请,我没有任何错误,但我无法查看MenuBar。我尝试将调试点设置为OnCreateOptionMenu方法,但是从不调用该方法。 我该如何修理它?

5 个答案:

答案 0 :(得分:2)

您需要 return true; onCreateOptionsMenu() ,如下面的代码所示

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

答案 1 :(得分:1)

只需使用:

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

答案 2 :(得分:0)

你应该像这样返回true而不是super:

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

    }
    return true;
}

希望它有所帮助。

答案 3 :(得分:0)

您必须在活动中使用这两种方法

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

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

            return super.onOptionsItemSelected(item);        
    }

答案 4 :(得分:0)

您的活动类延伸Activity,而不是AppCompatActivity。这些活动的默认主题不包括操作栏,这是菜单所在的位置。您需要在活动的布局文件中添加<Toolbar>,然后从setActionBar()方法中调用onCreate()

例如,将其添加为顶级<LinearLayout>代码的第一个子代:

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

在您setContentView()

中致电onCreate()后立即添加此内容
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setActionBar(toolbar);

现在,您的活动中将有一个操作栏,因此您的菜单将会显示。