【发布时间】:2016-07-15 20:56:14
【问题描述】:
我一遍又一遍地打开包含列表的fragments,然后,最终,一旦我到达包含列表的那些片段的末尾,我想清除fragment 堆栈以打开一个新的Fragment。
我不知道我是否清楚,所以这是我目前正在做的事情:
private final BroadcastReceiver onReceiveLaunchIncident = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
getSupportFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
// Select the correct item from the DrawerLayout
selectItem(drawerList.indexOf("Patrol"));
}
};
目前,当我输入我的BroadcastReceiver时,它是这样的
片段 D ---> 片段 A ---> 片段 E
我希望它是这样的:
片段 D ---> 片段 E
private void selectItem(final int position) {
addToDrawerIfNotExist(position);
if (mDrawerListChild.getCheckedItemPosition() == position) {
Log.i(TAG, "Same position selected in drawer");
}
mDrawerListChild.setItemChecked(position, true);
mDrawerLayout.closeDrawer(mDrawerLinear);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.setCustomAnimations(R.anim.fade_in, R.anim.fade_out, R.anim.fade_in, R.anim.fade_out);
BackHandledFragment fragment = fragmentListString.get(fragmentList.get(position));
ft.replace(R.id.content_frame, fragment, fragment.getTagText())
.commitAllowingStateLoss();
}
}, 300);
}
【问题讨论】: