2017-05-13 5 views
0

内のすべての断片の単一のフラグメントのためのメニューのアクション項目を取得するには、私は、ビューのフラグメントを持っている:[ViewPager] [ツールバー]のみViewPager

<android.support.design.widget.CoordinatorLayout 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:layout_width="match_parent" 
               android:layout_height="match_parent"> 

    <android.support.design.widget.AppBarLayout android:layout_width="match_parent" 
               android:layout_height="300dp" 
               android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

     <android.support.design.widget.CollapsingToolbarLayout android:id="@+id/word_view_appbar_collapsing" 
                   android:layout_width="match_parent" 
                   android:layout_height="match_parent" 
                   app:layout_scrollFlags="scroll|exitUntilCollapsed" 
                   app:expandedTitleGravity="center|bottom" 
                   app:expandedTitleTextAppearance="@style/AppBarTitleExpanded"> 

      <android.support.v7.widget.Toolbar android:id="@+id/word_view_toolbar" 
               android:layout_width="match_parent" 
               android:layout_height="?attr/actionBarSize" 
               app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
               app:layout_collapseMode="pin"> 

      </android.support.v7.widget.Toolbar> 

     </android.support.design.widget.CollapsingToolbarLayout> 

    </android.support.design.widget.AppBarLayout> 

    <android.support.v4.widget.NestedScrollView android:layout_width="match_parent" 
               android:layout_height="match_parent" 
               android:fillViewport="true" 
               app:layout_behavior="@string/appbar_scrolling_view_behavior"> 


    </android.support.v4.widget.NestedScrollView> 
</android.support.design.widget.CoordinatorLayout> 

この断片をFragmentStatePageAdapterを使用して、同様のスワイプ対応のビューをロードするために使用されます。私は(ない選択した断片上)断片の一つで表示アクションメニュー項目を取得

、私はツールバーへの参照を取得し、次のようにアクションバーとして設定フラグメントonCreateView方法であれば:

final Toolbar wordViewToolbar = (Toolbar) view.findViewById(R.id.word_view_toolbar); 
wordViewToolbar.inflateMenu(R.menu.word_view_app_bar_menu); 

は、私はすべての相互作用が可能になるので、最初のアプローチを取って希望:私はアクションバーとツールバーを設定し、実行しない場合は、次のように

final Toolbar wordViewToolbar = (Toolbar) view.findViewById(R.id.word_view_toolbar); 
     ((AppCompatActivity) getActivity()).setSupportActionBar(wordViewToolbar); 
     ((AppCompatActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

は、しかし、私はすべてのフラグメントのメニューアクション項目を取得しますAndroidで世話をしています。それでも私はIstのアプローチをIIndのように動作させる方法を知りたいのですが、最良のアプローチは何ですか?

答えて

0

setDisplayHomeAsUpEnabled()に電話する必要がある場合は、フラグメント内からそうすることをお勧めします。アクティビティから呼び出す。

あなたの断片の場合は、ちょうどこの各フラグメントに、メニューが含まれています。私は、ツールバーを宣言しているように私はあなたのコードは動作しませんsupportActionBarとして追加されるまで

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setHasOptionsMenu(true); // This Fragment has a menu 
} 

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater){ 
    inflater.inflate(R.menu.menu_fragment, menu); // Inflate the Fragment's menu 
    super.onCreateOptionsMenu(menu, inflater); 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 

    int id = item.getItemId(); 

    // Handle Fragment menu clicks 
    switch(id){ 
     case R.id.action_do_something: 
      // do something 
      return true; 

     case R.id.action_do_something_else: 
      // do something else 
      return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 
+0

、私のフラグメントのXMLを参照してください。 – Aki008

+0

@ Aki008私はあなたが達成しようとしているメニューの振る舞いの種類を知らない。フラグメントはコンテンツを処理するためのもので、アクティビティは通常、基本レイアウトとメニューを処理します。 –