2016-03-19 18 views
0

私はAndroidで非常に新しいですし、私のiPhoneアプリをAndroidに変換しようとしています。私は断片間を行き来しようとします、断片AからBにナビゲートした後、私は断片Bから戻るボタンでAに戻りたいと思います。私は研究をしましたが、それをよく理解できませんでした。コードの下に私は断片間を移動するナビゲーションドロワを持っています。フォロワーをクリックした後、私は戻るボタンでニュースフィードに戻っていきたいです。AndroidでのpopBackStackとaddToBackStack

//this is the navigation drawer part  
if (id == R.id.my_archive_drawer) { 

       myArchiveFragment fragment = new myArchiveFragment(); 
       android.support.v4.app.FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
       fragmentTransaction.replace(R.id.fragment_container, fragment); 
       fragmentTransaction.addToBackStack("newsFeedFragment"); 
       fragmentTransaction.commit(); 

      } else if (id == R.id.followers_drawer) { 

       followedFollowersFragment fragment = new followedFollowersFragment(); 
       android.support.v4.app.FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
       fragmentTransaction.replace(R.id.fragment_container, fragment); 
       fragmentTransaction.addToBackStack("newsFeedFragment"); 
       fragmentTransaction.commit(); 

      } 
//this is the navigation drawer part 



//this is the on create part part 
     newsFeedFragment fragment = new newsFeedFragment(); 
     android.support.v4.app.FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
     fragmentTransaction.replace(R.id.fragment_container, fragment); 
     fragmentTransaction.commit(); 
//this is the on create part part 


//onbackpreseed part 
    public void onBackPressed() { 
     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     if (drawer.isDrawerOpen(GravityCompat.START)) { 
      drawer.closeDrawer(GravityCompat.START); 
     } else { 
      getFragmentManager().popBackStack("newsFeedFragment"); 
     } 
    } 
//onbackpressed part 

答えて

1

addToBackStackは、フラグメントをスタックに入れることを意味します。つまり、フラグメントニュースをフラグメントフォロワーにプッシュすると、フラグメントにスタックを追加します。だからあなたが戻ってくると、あなたはニュースの断片に戻ります。

このコードを試してください:あなたのonBackPressed(中

followedFollowersFragment fragment = new followedFollowersFragment(); 
android.support.v4.app.FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
fragmentTransaction.replace(R.id.fragment_container, fragment); 
fragmentTransaction.addToBackStack(null); 
fragmentTransaction.commit(); 

そして)あなたはonBackPressedは、戻るボタンをクリックして呼び出すときにすでにフォロワーフラグメントを削除しているので、)(popbackstackを削除します。それは私が戻るボタンを無効にしたい場合はどう:)働いていた、非常に多くのJpCrowありがとうあなたはhere

+0

を読むことができます。この2つの方法の詳細については

@Override public void onBackPressed() { DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); if (drawer.isDrawerOpen(GravityCompat.START)) { drawer.closeDrawer(GravityCompat.START); } else { super.onBackPressed(); } } 

:だからonBackPressed()このようにする必要があります私が "作成中"の部分で作成されたnews_freedフラグメントに入っているとき、開始フラグメント? – saner

+0

その場合は、onBackPressed()をオーバーライドし、super.onBackPressed()をコールしないでください。その場合にのみ、フラグなどを追加する必要があります – JpCrow

関連する問題