2016-12-03 10 views
0

選択されたナビゲーション項目を変更するにはどうすれば私は、メソッド名の交換を呼び出すことによって、フラグメントを開きますそれをクリックしたときに、私はナビゲーションドロワー活動 app screenプログラムで

今各メニュー項目を使用して新しいプロジェクトを作成したとき。フラグメント1で

public boolean onNavigationItemSelected(MenuItem item) { 
      // Handle navigation view item clicks here. 
      int id = item.getItemId(); 

      if (id == R.id.nav_home) { 
       replaceFragment(0); 
       setTit = "Your State Info."; 
       setTitle(setTit); 
} else if (id == R.id.nav_flashcards) { 

      replaceFragment(1); 
      setTit = "Flash Cards"; 
      setTitle(setTit); 

確認変更はfragmetがチェックラジオに依存して開きますとき、私はRADIOGROUPを持っています。

@Override 
    public void onCheckedChanged(RadioGroup radioGroup, int i) { 

     RadioButton radioButton = (RadioButton)getActivity().findViewById(i); 

      if(radioButton.getTag()==1) 
     ((MainActivity) getActivity()).replaceFragment(0); 
      else if ((radioButton.getTag()==2)) 
      ((MainActivity) getActivity()).replaceFragment(2); 
    } 

アプリケーションが正常に動作しますが、問題は、私はナビゲーションアイテムが選択されて変更しても、アクションバーのタイトルを変更することができる方法です。

それは、このよう

((MainActivity) getActivity()).onNavigationItemSelected(menuitem); 

を使用することが可能ですが、私はメニュー内の項目にアクセスすることができますどのようにフラグメントから> activity_main_drawer.xmlとあなたのフラグメントでメニュー項目

答えて

0

を紹介し、それを渡します追加する必要がありますsetOptionsMenu(true)

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

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    // TODO Add your menu entries here 
    super.onCreateOptionsMenu(menu, inflater); 
} 
+0

フラグメントはnav_homeをrepresentsl新しいフラグメントを開き、問題があるのは、 ブールが真であるとしましょう選択項目をnav_flashcardsからnav_homeに移動する方法 –

0

質問が不明です。 navigation drawerfragmentsの全体のポイントは、ナビゲーションとそのメインツールバーに1つのメインアクティビティでアクセスすることです(画像内の青色の色は、フラグメントをロードするときにいつでも変更できます)

しかし、あなたは断片のframe /親ビューを作成する必要がありツールバービューを吹く(通常はそれが2つのXML S、activtyMain.xmlに付属していると、コンテンツメインはactivityMain.XMLのツールバーの下に含まれているcontentMain.xml理由です)ので、あなたが断片を作成しますmatch_parentcontentMain.xmlにすると、フラグメント/ sが追加されている主なアクティビティにあるので、そのビューに追加したすべてのフラグメントにツールバーがアクセスできることがわかります。

あなたはメインアクティビティを持っており、その中にフラグメント/フレームがあります。どのフラグメントを読み込んでも問題はありませんが、メインツールバーにはまだアクセスできます。

これで、どのアイテムがクリックされたかを確認した後、navigationDrawerにそのフラグメントをロードしますか? mainActivityのメインツールバーにアクセスし、表示する必要がある変更を行います。それだけです!

if (id == R.id.nav_whatever) { 
// access toolBar or any view in main activity and do the changes 
// call relevant fragment 
} 

しかし、あなたは、あなたが試みることを試みるあなたのフラグメントのクラス内のそのtoolbarまたはmainActivityビューにアクセスすることはできません。

編集:

あなたが値を変更する第2のフラグメントであなたのボタンをクリックしたときに、定数クラスまたは類似した何かで をブール型にしてください。 さてあなたはこれが私の作品

もう一度
// keep the id as it is and use the Boolean to check where you needs to go 
    if (id == R.id.nav_whatever) { 
     if(boolianName){ 
     // boolianName is true go load second fragment 
      }else{ 
      // load firstfragment 
      } 

     } 
+0

nav_flashcardsフラグメントにラジオボタンがあると、そのラジオボタンをクリックすると新しいフラグメントが開き、現在のものが新しいものに置き換えられ、それがnave_homeになりますコード((MainActivity)getActivity())。onNavigationItemSelectedしかし、メニューを開くときにはまだnav_flashcardsの項目を選択しているので、nav_flashcardsを使ってアイテムの選択をnav_homeに変更する方法が必要です。 –

+0

これは、最初のフラグメントの名前を持つナビゲーションドロワーアイテムに名前があることを意味します。 2番目のフラグメントをロードするときにそれを変更したいのですか? –

+0

このメニューをクリックするとメニュー項目(R.id.nav_home)が開きます。このメニュー項目をクリックするとフラグメント0、メニュー項目ID(R.id.nav_flahcard)が開きます。フラグメント1を開きます。フラグメント1の中に、これをクリックするとラジオボタンがあります。ラジオはフラグメント0を開きますが、メニュー項目を開くと(R.id.nav_flahcard)、ラジオボタンからフラグメント0を開いたときにメニュー項目の選択を(R.id.nav_home)に変更する必要もあります –

1

をナビゲーション引き出しをクリックしてください。.. nav_flashcardsで

NavigationView navigationView = (NavigationView) getActivity().findViewById(R.id.nav_view); 
     navigationView.getMenu().getItem(2).setChecked(true); 
+0

です。すばらしいです! – Saveen