2016-12-19 3 views
1

私はアクティビティでナビゲーションドロアを実装しました。私は私のアプリに3-4の断片があります。いつもメインのフラグメントに戻って返される

のは、3つの断片があるとしましょう:私は私のアプリを起動するとFragment_1、Fragment_2、Fragment_3

は、Fragment_1がロードされ、私は、ナビゲーション引き出しを使用して別の断片に行きます。

だから、

Fragment_1ようなものだ - > Fragment_1 - - >私は戻るボタンを押したときに、それは

Fragment_3ようなものだ、今> Fragment_3

- > Fragment_2 - > Fragment_3 - > Fragment_1 Fragment_3 - > Fragment_2 - > Fragment_1

バックキーを押すとどこにいても、 は常にFragment_1に戻ることができます。

私は別のフラグメントにナビゲートするためのコードの下に使用しています: -

nav_menu_list.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

     FragmentManager fragmentManager = getSupportFragmentManager(); 
     FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 

     switch (position) { 
      case 0: 
       DashboardFragment dashboardFragment = new DashboardFragment(); 
       fragmentTransaction.replace(R.id.mainContainer, dashboardFragment, dashboardFragment.getClass().getName()); 
       break; 

      case 1: 
       ProfileFragment profileFragment = new ProfileFragment(); 
       fragmentTransaction.replace(R.id.mainContainer, profileFragment, profileFragment.getClass().getName()); 
       fragmentTransaction.addToBackStack(null); 
       break; 

      case 2: 
       ContactUsFragment contactUsFragment = new ContactUsFragment(); 
       fragmentTransaction.replace(R.id.mainContainer, contactUsFragment, contactUsFragment.getClass().getName()); 
       fragmentTransaction.addToBackStack(null); 
       break; 

      case 3: 
       AboutUsFragment aboutUsFragment = new AboutUsFragment(); 
       fragmentTransaction.replace(R.id.mainContainer, aboutUsFragment, aboutUsFragment.getClass().getName()); 
       fragmentTransaction.addToBackStack(null); 
       break; 

      default: 
       break; 
     } 
     fragmentTransaction.commit(); 
     drawer.closeDrawer(GravityCompat.START); 
    } 
}); 

主な活動には、この方法で問題が解決されます...

答えて

1
@Override 
    public void onBackPressed() { 

     if(!(getSupportFragmentManager().findFragmentById(R.id.mainContainer) instanceof DashboardFragment)) 
     { 
      DashboardFragment dashboardFragment = new DashboardFragment(); 
      fragmentTransaction.replace(R.id.mainContainer, dashboardFragment, dashboardFragment.getClass().getName()); 
     }else { 
      super.onBackPressed(); 
     } 
    } 

使用助けてください。

+0

このエラーが発生しました: - オペレータ "!" "android.app.fragment"には適用できません – Sid

+0

はまだ動作しません。 と同じ形式Fragment_3 - > Fragment_1 - > Fragment_3 - > Fragment_2 - > Fragment_1 – Sid

+0

Javaコードから 'fragmentTransaction.addToBackStack(null);'を削除します。 –