2017-03-26 22 views
2

私は、アクティビティのコンテナに表示するフラグメントを持っています。問題は、フラグメントのメニューオプションが表示されないことです。ここ はIフラグメントを追加するアクティビティコードである:私は.addと.replaceを試みたが、両方とも同じ結果:Androidのフラグメントのオプションメニューが表示されない

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

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

    GridFragment gridFragment = new GridFragment(); 

    getSupportFragmentManager().beginTransaction() 
      .add(R.id.container, gridFragment, TAG_GRID_FRAGMENT) 
      .commit(); 
} 

アクティビティのXML:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:id="@+id/container" 
android:layout_height="match_parent" 
android:layout_width="match_parent" 
tools:context="appfactory.app.movies.ui.MainActivity" 
app:sharedElementTransitions="true" /> 

ここでは、フラグメントののonCreateある:

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

フラグメントのonCreateOptionsMenu:

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    menu.clear(); 
    inflater.inflate(R.menu.main_fragment, menu); 
    super.onCreateOptionsMenu(menu, inflater); 
} 

フラグメントのメニューは、メインXMLにフラグメントをハードコードするときにのみ表示されますが、これは実行したくありません。提案を感謝してください。

+0

同じ設定が私のために機能します。あなたはそれが素晴らしい(私はあなた自身がそれを行うことができないと思うだろうと思う)その行動を持つ単純なプロジェクトを投稿しようとする場合。 – azizbekian

答えて

1

メニューclear()inflate()の前にsuper.onCreateOptionsMenu(menu, inflater)と呼んでください。

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    super.onCreateOptionsMenu(menu, inflater);  
    menu.clear(); 
    inflater.inflate(R.menu.main_fragment, menu); 

} 
+0

@fullMoon:私のソリューションがあなたの問題を解決するならば、upvoteし、それを受け入れられた答えとしてマークしてください。ありがとう〜 – FAT