【发布时间】:2015-10-19 05:16:43
【问题描述】:
我正在尝试对片段使用背压。我无法修复它。下面是我的代码。
/**
* Diplaying fragment view for selected nav drawer list item
* */
private void displayView(int position) {
// update the main content by replacing fragments
Fragment fragment = null;
if (position!=3){
pos = position;
}
switch (position) {
case 0:
fragment = new Profile();
break;
case 1:
fragment = new Products();
break;
case 2:
fragment = new Help();
break;
case 3:
DialogLogout(DrawerFragment.this, getString(R.string.logout), getString(R.string.cofirm_logout));
break;
default:
break;
}
if (fragment != null) {
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.frame_container, fragment)
.commit();
// update selected item and title, then close the drawer
mDrawerList.setItemChecked(pos, true);
mDrawerList.setSelection(pos);
setTitle(navMenuTitles[pos]);
mDrawerLayout.closeDrawer(mDrawerList);
} else {
// error in creating fragment
Log.e("MainActivity", "Error in creating fragment");
}
}
在产品片段上,我有一个列表,我再次使用它来调用另一个片段。
listCards.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Fragment fragment = new Transactions();
if (fragment != null) {
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction()
// .replace(R.id.frame_container, fragment)
.remove(Products.this)
.add(R.id.frame_container, fragment) //replace(R.id.frame_container, fragment)
.addToBackStack(null)
.commit();
} else {
// error in creating fragment
Log.e("MainActivity", "Error in creating fragment");
}
}
});
return rootView;
}
DrawerFragmentActivity 的 BackPress 功能如下:
@Override
public void onBackPressed() {
FragmentManager fragmentManager = getSupportFragmentManager();
int count = fragmentManager.getBackStackEntryCount();
if (count > 0) {
fragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
} else {
super.onBackPressed();
}
}
功能就像,DrawerFragmentActivity(默认配置文件页面)->Product->Transactions。抽屉图标也会在交易屏幕上可见,用户可以在交易屏幕上使用抽屉再次点击我的卡片屏幕。
当用户点击产品时,它会再次打开交易页面,它工作正常。现在发生的情况是,当我们返回交易时,它会出现在产品页面上,但是当我再次点击产品列表屏幕(框架)时,它会与 ProductsList 和交易屏幕重叠。
很抱歉,如果我感到困惑,如果您不明白,请询问。我可以解释。
谢谢。
【问题讨论】:
标签: android fragment android-fragmentactivity