0

私は ActionBar を使用し、Activity で内部の TabListener を使用します。

public static class TabListener<T extends Fragment> 
implements ActionBar.TabListener{

                   private final Activity myActivity;
                   private final String myTag;
                   private final Class<T> myClass;

                   public TabListener(Activity activity, String tag, Class<T> cls) {
                       myActivity = activity;
                       myTag = tag;
                       myClass = cls;
                   }

                @Override
                public void onTabReselected(Tab tab, FragmentTransaction ft) {

                    // User selected the already selected tab. Usually do nothing.

                }

                @Override
                public void onTabSelected(Tab tab, FragmentTransaction ft) {
                    Fragment myFragment = myActivity.getFragmentManager().findFragmentByTag(myTag);

                       // Check if the fragment is already initialized
                             if (myFragment == null) {
                                 // If not, instantiate and add it to the activity
                                 myFragment = Fragment.instantiate(myActivity, myClass.getName());
                                 myActivity.setTitle( myClass.getName());
                                 ft.add(android.R.id.content, myFragment, myTag);
                             } else {
                                 // If it exists, simply attach it in order to show it
                                 myActivity.setTitle( myFragment.getClass().getName());
                                 ft.attach(myFragment);
                             }
                             Log.i("current fragment", myFragment.getClass().toString());

                }

                @Override
                public void onTabUnselected(Tab tab, FragmentTransaction ft) {
                      Fragment myFragment = myActivity.getFragmentManager().findFragmentByTag(myTag);

                       if (myFragment != null) {
                                 // Detach the fragment, because another one is being attached
                                 ft.detach(myFragment);
                             }

                }
        }

現在のタブで別の Fragment を DialogFragment から切り替える必要があります。私は次のような一般的な方法でそれを行います:

 Fragment newFragment = new ContactsArchiveFragment();
                fragmentTransaction.replace(android.R.id.content, newFragment);
                fragmentTransaction.addToBackStack(null);
                fragmentTransaction.commit();

しかし、別のタブに切り替えると、現在のフラグメント(切り替えられたもの)は切り離されず、上に表示されます。どうすればこれを解決できますか?

4

2 に答える 2