2017-10-26 10 views
-3

私はNavigation drawerアクティビティーを持っていて、それにはFragmentsのペアが含まれています。私の問題は、私がフラグメントBを持っている必要がありbuttonクリックでNavigation drawerアクティビティクラスを呼び出したいですデフォルトのナビゲーションの引き出しがフラグメントA.アクティビティーからの呼び出し断片

を持っていることで、私はここに私のコードを掲載しています:

content_frameがある
back.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      startActivity(new Intent(getApplicationContext(),Navigation.class)); 
      FragmentTransaction tx = getSupportFragmentManager().beginTransaction(); 
      tx.replace(R.id.content_frame, new FragmentB()); 
      tx.commit(); 
      finish(); 
     } 
    }); 

を私はフラグメントBのビューを置き換えたい領域でした..

+4

[Androidのメインアクティビティからのフラグメントの呼び出し方法](https://stackoverflow.com/questions/37653037/android-how-to-call-fragment-from-my-main-activity) –

+0

Iナビゲーションドロワーのアクティビティのビューであるcontent_frameにアクセスすることはできません。したがって、この(現在の)アクティビティでcontent_frameというビューが存在しないため、FragmentBをcontent_frameに置き換えることはできません。 –

答えて

1

ようにあなたは、ナビゲーション活動の

back.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
Intent intent = new Intent(getApplicationContext(), Navigation.class); 
    intent.putExtra("SELECTEDVALUE", 2);//1 for fragament A use 2 for fragment B 
    startActivity(intent); 

     } 
    }); 

今、あなたのOnCreate()メソッド

Bundle extras = savedInstanceState != null ? savedInstanceState : getIntent().getExtras(); 
     int selectedValue = extras.getInt("SELECTEDVALUE"); 

switch (selectedValue) { 
       case 1: 
        goToFragment(new A(), false); 

        break; 
       case 2: 
        goToFragment(new B(), false); 

        break; 
必要なものの断片をチェックするために余分なデータを送信]をクリックし、ボタンにこのアプローチ

を試してみてください

最終的にgotoFragmentは...

private void goToFragment(Fragment fragment, boolean addToBackStack) { 
     FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); 

     if (addToBackStack) { 
      transaction.addToBackStack(null); 
     } 

     transaction.replace(R.id.container, fragment).commit(); 
    } 
+0

私はこれを試してみます –

+0

これは私のために働いた@Hiren Gujaratiありがとうございました.. –

+0

ようこそ..これは答えとしてマークすることができます –

0

以下のコードを試してみてください。

back.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 

     Fragment fragment = new FragmentB(); 
     FragmentManager fm =getActivity().getSupportFragmentManager(); 
     FragmentTransaction ft = fm.beginTransaction(); 
     ft.replace(R.id.content_frame, fragment); 
     ft.commit(); 
    } 
}); 
0

だけFragmentB

このような
FragmentB fragment - new FragmentB(); 

のインスタンスを作成し、このようにそれを渡します。

tx.replace(R.id.content_frame, fragment); 
tx.commit(); 

fragmentを使用して、アクティビティのすべての変数とメソッドにアクセスできます。このfragment.methodName();

0

は、このコードを試してみてください。

back.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      getActivity().getSupportFragmentManager().beginTransaction() 
          .add(R.id.content_frame, new FragmentB(), "fragmentB").addToBackStack(null).commit(); 
     } 
    }); 

が、それはあなたの問題を解決していただければ幸いです。

関連する問題