1

これに はlistViewFragment Aが含まれています- ユーザーがアイテムをクリックするまでに、現在のビューは、 というリストビューも含む別のビューに置き換えられます。Fragment B

Fragment A -> B, Fragment A を backstack に追加できたので、ユーザーが にいるときにFragment B戻るボタンを押すと、 に戻りますFragment A。問題は、再度Fragment A( listView ) を押した後、銀行画面が表示されるだけで、Fragment B再度表示されるはずです。

フラグメントA

      lv.setOnItemClickListener(new OnItemClickListener() {

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


                //FragmentActivity  activity =  getActivity();

                    String fragMainGroups = "mainGroups";

                    Fragment videoFragment = new VideoPlayerFragment();
                    FragmentTransaction transaction = getFragmentManager().beginTransaction();
                    transaction.replace(R.id.contentFragment, videoFragment, fragMainGroups );
                    transaction.addToBackStack(fragMainGroups);
                    transaction.commit(); 

            }
        });

編集

                String fragMainGroups = "mainGroups";
            String Groups = "Groups";

                Fragment fragment1 = new VideoPlayerFragment();


                /*FragmentTransaction transaction = getFragmentManager().beginTransaction();
                transaction.replace(R.id.contentFragment, fragment1, fragMainGroups );
                transaction.addToBackStack(fragMainGroups);
                transaction.commit(); */

                FragmentTransaction ft = getFragmentManager().beginTransaction();
                ft.addToBackStack(Groups);
                ft.add(R.id.contentFragment, fragment1, fragMainGroups);
                ft.commit();
4

2 に答える 2

0

アクティビティが多数のフラグメントをホストしない限り、アクティビティを通じて戻るボタンを押すことを処理することをお勧めします。フラグメント内で戻るボタンを押すと、アクティビティの onBackPressed() メソッドが呼び出され、オーバーライドして処理することができます..だからあなたの場合フラグメントの戻るボタンの処理は、この方法で行うことができます..それに応じて更新できます

メインアクティビティ

     public static boolean isMainActivityShown ;
     public static boolean isFragment1FromMainActivity=false ;
     public static boolean isFragment1FromFragment2=false ;
     public static boolean isFragment2Shown=false ;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        isMainActivityShown=true  //inside onCreate method put isMainActivityShown true
. 
. 
.
}
.
.
Fragment currentFragment = new Fragment1();
isMainActivityShown=false;   //when moving to fragment1 
isFragment1FromMainActivity=true;
frgManager = getFragmentManager();
frgManager.beginTransaction().replace(R.id.content_frame, currentFragment)
                                        .commit();
     @Override
        public void onBackPressed() {

            if(isMainActivityShown)
            {
                finish();
            }
            else if(isFragment1FromMainActivity)
            {
            isMainActivityShown=true;
            isFragment1FromMainActivity=false;
               //write the code to move to MainActvity
            }
           else if(isFragment1FromFragment2)
            {
               //Code to move back to Fragment2 
          Fragment currentFragment = new Fragment2();
                isFragment2Shown=true;
               isFragment1FromFragment2=false;

                FragmentManager frgManager;
                frgManager = getFragmentManager();
                frgManager.beginTransaction().replace(R.id.content_frame, currentFragment)
                        .commit();
            }
           else if(isFragment2Shown)
            {  //When you are in Fragment 2 pressing back button will move to fragment1
                Fragment currentFragment = new Fragment1();
                isFragment2Shown=false;
               isFragment1FromFragment2=true;

                FragmentManager frgManager;
                frgManager = getFragmentManager();
                frgManager.beginTransaction().replace(R.id.content_frame, currentFragment)
                        .commit();
            }

            }

フラグメント1

Fragment currentFragment = new Fragment2();

MainActivity.isFragment1FromMainActivity=false;

MainActivity.isFragment2Shown=true;
frgManager = getFragmentManager();
frgManager.beginTransaction().replace(R.id.content_frame, currentFragment)
                                    .commit();
于 2015-01-18T14:15:45.220 に答える