Fragment跳轉,同時實現Fragment,fragment跳轉
在使用getSupportFragmentManager().findFragmentByTag(tag)無法找到,返回為空白,原因由於咋replace()時必須要將fragment放入到返回棧中。
保證調用以下方法:ft.addToBackStack(tag);
/**
* Example of starting nested fragment from another fragment: Fragment
* newFragment = ManagerTagFragment.newInstance(tag.getMac()); TagsActivity
* tAct = (TagsActivity)getActivity(); tAct.pushFragments(newFragment, true,
* true, null);
* --------------------------------------------------------------
* fragement切換
*
* @param fragment
* 要切換的介面
* @param shouldAnimate
* 是否需要動畫
* @param addToBackStack
* 是否添加到返回棧中(只有添加到返回棧中的介面
* 才可以使用getSupportFragmentManager().findFragmentByTag
* (setting))找到對應的介面(使用返回鍵返回後,棧中緩衝的介面回收)
* @param tag
* 介面標誌
*/
public void pushFragments(Fragment fragment, boolean shouldAnimate,
boolean addToBackStack, String tag) {
FragmentManager manager = getSupportFragmentManager();// getFragmentManager();
FragmentTransaction ft = manager.beginTransaction();
if (shouldAnimate) {
// ft.setCustomAnimations(R.animator.fragment_slide_left_enter,
// R.animator.fragment_slide_left_exit,
// R.animator.fragment_slide_right_enter,
// R.animator.fragment_slide_right_exit);
}
ft.replace(R.id.sdk_main_content, fragment, tag);
// ft.attach(fragment);
if (addToBackStack) {
/*
* here you can create named backstack for realize another logic.
* ft.addToBackStack("name of your backstack");
*/
ft.addToBackStack(tag);
} else {
/*
* and remove named backstack:
* manager.popBackStack("name of your backstack",
* FragmentManager.POP_BACK_STACK_INCLUSIVE); or remove whole:
* manager.popBackStack(null,
* FragmentManager.POP_BACK_STACK_INCLUSIVE);
*/
manager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
}
ft.commit();
}
</pre><pre name="code" class="java">
</pre><pre name="code" class="java">