跳轉:
android從fragment跳轉到fragment問題解決
傳值:
activity嵌套fragment,fragment內嵌fragment之間傳值切換fragment
Android Support v4 支持包中 Fragment用法
使用activity的fragmenttransation的replace方法替換
private void changeToAnotherFragment(){
//如果是用的v4的包,則用getActivity().getSuppoutFragmentManager();
FragmentManager fm = getActivity().getFragmentManager();
//注意v4包的配套使用
Fragment fragment = new 目標fragment();
fm.beginTransaction().replace(容器控件id,fragment).commit();
}
================================================================================
當在使用activity嵌套fragment,fragment再嵌套子fragment時,相當於有兩層fragment,假設最外層爲第一層,其中一個Fragment爲ParentfragmentA,該ParentFragmentA中又嵌套了三個fragment,也就是說第二層爲ChildFragment1,ChildFragment2,ChildFragment3,如果想在其中一個子fragment中的控件點擊切換到同一層的另一個子fragment
如圖,在第二層fragment中,child1fragment中有兩個控件viewI和viewII,點擊viewI可以切換到同一層的fragment,比如,點擊切換到ChildFragment2
實現如下:
在點擊viewI時進行如下操作
FragmentManager manager = getFragmentManager();//獲取到父fragment的管理器
//獲取到父parentFragment
ParentFragmentA home = (ParentFragmentA) manager.getFragments().get(0);
//獲取到ParentFragment的mViewPager變量
home.mViewPager.setCurrentItem(1);
說明一下,ParentFragmentA中聲明的mViewPager必須爲public。
說一下getFragmentManger方法
/**
* Return the FragmentManager for interacting with fragments associated
* with this fragment's activity. Note that this will be non-null slightly
* before {@link #getActivity()}, during the time from when the fragment is
* placed in a {@link FragmentTransaction} until it is committed and
* attached to its activity.
*
* <p>If this Fragment is a child of another Fragment, the FragmentManager
* returned here will be the parent's {@link #getChildFragmentManager()}.
*/
final public FragmentManager getFragmentManager() {
return mFragmentManager;
}
/**
* Return a private FragmentManager for placing and managing Fragments
* inside of this Fragment.
*/
final public FragmentManager getChildFragmentManager() {
官方API已經寫明,getFragmentManger方法:如果該fragment是另一個fragment的子fragment,則獲取到的是父fragment的manager
getChildFragmentManager方法:獲取到外層fragment的子fragment的manager
對於viewII的點擊事件,實現從Child1切換到ParentB
//獲取到 所依附的activity對象
InitEmptyKeyActivity activity = (InitEmptyKeyActivity) getActivity();
activity.mViewPager.setCurrentItem(IntentConstant.MANAGE_AND_OP_FRAGMENT);
..