2016-08-17 3 views
0

ツールバーは表示されますが、メニュー項目は表示されません。 コードをアクティビティに移動すると、対応するonCreateOptionsMenuが呼び出されます。 アクションバーに戻ると、フラグメントのバージョンが正常に動作します。このため、より複雑なライフサイクルのonCreateOptionsMenuをトリガーしないフラグメントでAndroidサポートツールバーを使用する

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Toolbar toolbar = (Toolbar) getActivity().findViewById(R.id.imd_toolbar); 
    ((AppCompatActivity) getActivity()).setSupportActionBar(toolbar); 
    setHasOptionsMenu(true); 

} 

、私は(N00Bここところで)フラグメントフリー行くことを考えています、プラス私は本当にタブレット特殊なレイアウトを行う上で計画していません。 これは他の人には起こっていないと私はバグをしています。これがわかっているのか、それとも私の問題なのかを教えてください。

ありがとうございます!

+0

メニューに項目が追加されていますか? – Moulesh

+0

ツールバーのgetActivity()を使用している理由ツールバー=(ツールバー)getActivity()。findViewById(R.id.imd_toolbar);? –

+0

メニューに項目を追加する方法は? –

答えて

0

私はこの問題を発見しました。

変更この行:

Toolbar toolbar = (Toolbar) rootView.findViewById(R.id.imd_toolbar); 

例:

Toolbar toolbar; 
private View rootView; 


rootView = inflater.inflate(R.layout.fragment_top_rated, container, false); 
toolbar = (Toolbar) rootView.findViewById(R.id.tool_bar1); 

私は信じている問題の理由は、フラグメントリターンでそのgetActivity()ある

Toolbar toolbar = (Toolbar) getActivity().findViewById(R.id.imd_toolbar); 

このようなものにそのフラグメントが現在関連付けられているアクティビティではなく、ビュー

+0

ありがとう!それはそのようなノーバスでした。 – Leonardo

+0

問題ありません!!!! –

0

は、以下のようなあなたのmenuファイルに何かを作成します。

sample_menu.xml:で

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
<item 
    android:id="@+id/menu_sms_ticket" 
    android:title="@string/menu_sms_ticket" 
    android:visible="false"/> 
</menu> 

あなたactivityこのmenuファイルを追加し、toolbarを追加するためのコードを変更、それはあなたのactivityの内側に行います。あなたのfragmentで、setHasOptionMenu(true)を呼び出し、このような機能何かの下に上書き:

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    super.onCreateOptionsMenu(menu, inflater); 
    menu.getItem(0).setVisible(true); 
} 

これは、これはあなたが望んでいるなら、私に知らせてみてください。

+0

答えをありがとう。これは本当に私が望んでいたものではありません。私はどのツールバーを使用しているのかを知ることなく、その断片から作品を作り出す方法を知りたい。このツールバーをアクティビティに設定するこの回避策(私はそれを非表示にして表示する必要はありません。単に呼び出すメソッドが必要です)は、フラグメントで直接動作させることができない場合は試してみます。そしておそらく、私はちょうどその断片を取り除くでしょう。 – Leonardo

+0

アクティビティの 'toolbar'を設定することは、通常の方法ではありません。そして、 'activity'に' menu item'を隠しておき、それを必要とする特定の 'fragment'に表示します。フラグメントを使用することは、親レイアウトの動作が似ていて、その一部を複数回更新したい場合に意味があります。とにかくあなたの呼び出し。 – himanshu1496

+0

私はあなたの助けをありがとう、私はまだアンドロイドを学んでいるので、多分それをそのように実装することになります大丈夫を参照してください。もし私のために働くなら、私は戻ってこの答えを受け入れるでしょう。 – Leonardo

関連する問題