2017-11-29 21 views
-2

Menùをメインアクティビティと他のすべてのアクティビティにディスパッチできません。 これは私のmain.xmlです:OnCreateOptionMenuは決して呼び出されません

<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ファイルです:私は自分のアプリケーションを起動しようとした場合

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

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です私は何のエラーもありませんが、私はMenuBarを見ることができません。私はOnCreateOptionMenuメソッドにデバッグポイントを設定しようとしましたが、メソッドは呼び出されません。 どうすれば修正できますか?

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

メニューを実際に使用するには、 'onCreateOptionsMenu()'から 'true;を返す必要があります。あなたのブレークポイントの問題については不明です。 –

+0

あなたはsuperメソッドのインスタンスをonCreateOptionsMenuで返します。ただtrueを返します。 –

+0

私が書いたすべてのコードを使用しようとしていますが、Menùは表示しません。 Android 6.0を使用した可能性はありますが、別のコンポーネントがありますか? – bircastri

答えて

2

代わりに、このようなスーパーのtrueを返す必要があります。

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

    } 
    return true; 
} 

はそれがお役に立てば幸いです。

2

次のコードのようにあなたがonCreateOptionsMenu()return true;に必要

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

に両方の方法を使用する必要があります。

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

あなたのアクティビティクラスがActivity、ないAppCompatActivity拡張します。これらのアクティビティのデフォルトのテーマには、アクションバーが含まれています。アクションバーは、メニューが存在する場所です。アクティビティのレイアウトファイルに<Toolbar>を追加し、onCreate()メソッドからsetActionBar()を呼び出してください。例えば

、トップレベル<LinearLayout>タグの最初の子としてこれを追加します。今、あなたは意志

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

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

そして、あなたはあなたのonCreate()setContentView()を呼び出した直後にこれを追加アクティビティにアクションバーがあり、メニューが表示されます。

関連する問題