mirror of https://github.com/FongMi/TV.git
parent
0014756db8
commit
8dae3be446
@ -0,0 +1,40 @@ |
|||||||
|
package com.fongmi.android.tv.ui.custom; |
||||||
|
|
||||||
|
import android.view.ViewGroup; |
||||||
|
|
||||||
|
import androidx.fragment.app.Fragment; |
||||||
|
import androidx.fragment.app.FragmentManager; |
||||||
|
import androidx.fragment.app.FragmentTransaction; |
||||||
|
|
||||||
|
public abstract class FragmentStateManager { |
||||||
|
|
||||||
|
private final FragmentManager fm; |
||||||
|
private final ViewGroup container; |
||||||
|
|
||||||
|
public FragmentStateManager(ViewGroup container, FragmentManager fm) { |
||||||
|
this.container = container; |
||||||
|
this.fm = fm; |
||||||
|
} |
||||||
|
|
||||||
|
public abstract Fragment getItem(int position); |
||||||
|
|
||||||
|
public void change(int position) { |
||||||
|
FragmentTransaction ft = fm.beginTransaction(); |
||||||
|
Fragment fragment = fm.findFragmentByTag(getTag(position)); |
||||||
|
if (fragment == null) ft.add(container.getId(), fragment = getItem(position), getTag(position)); |
||||||
|
else ft.show(fragment); |
||||||
|
Fragment current = fm.getPrimaryNavigationFragment(); |
||||||
|
if (current != null) ft.hide(current); |
||||||
|
ft.setPrimaryNavigationFragment(fragment); |
||||||
|
ft.setReorderingAllowed(true); |
||||||
|
ft.commitNowAllowingStateLoss(); |
||||||
|
} |
||||||
|
|
||||||
|
public String getTag(long id) { |
||||||
|
return "android:switcher:" + id; |
||||||
|
} |
||||||
|
|
||||||
|
public Fragment getFragment(long id) { |
||||||
|
return fm.findFragmentByTag(getTag(id)); |
||||||
|
} |
||||||
|
} |
||||||
Loading…
Reference in new issue