我正在使用android示例FragmentTabs 。
说,有4个标签(A,B,C,D)。我使用此代码
将标签片段(A)替换为另一个(E)FragmentTransaction transaction = getFragmentManager()
.beginTransaction();
transaction.replace(R.id.realtabcontent, newFragment);
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
transaction.addToBackStack(null);
// Commit the transaction
transaction.commit();
在另一个标签C中,当我按回按钮时,标签(A)屏幕变黑。
答案 0 :(得分:2)
嗨,Ashish这个问题正在发生,因为当你按下后退键时,片段无法像正常活动中的正常后退活动一样理解最近使用的活动会自动打开但是当你按下后退按钮时片段不会发生,所以我们我必须在片段中维护回事件我正在共享我正在处理我的片段活动的代码,所以可能你可以检查这个
public void onListItemClick(ListView l, View v, int position, long id) {
showDetail(position);
}
void showDetail(int position) {
this.position=position;
if(isDualPane){
getListView().setItemChecked(position, true);
DetailFragment detailFragment = (DetailFragment)
getFragmentManager().findFragmentById(R.id.detail);
if (detailFragment == null || detailFragment.getIndex() != position ) {
detailFragment = new DetailFragment(position);
FragmentTransaction ft =getFragmentManager().beginTransaction();
ft.replace(R.id.detail, detailFragment);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.commit();
}
}
else {
Intent intent =new Intent();
intent.setClass(getActivity(),DetailActivity.class);
intent.putExtra("position", position);
startActivity(intent);
}
看到else部分显示intent正在维护我的片段
请查看我在这里分享的所有片段用户的示例(Fragment With Gridview),你会发现一些有用的东西
在此链接上查看我的回答:How to Show Different Layouts inside Fragments
答案 1 :(得分:1)
您最有可能将第一个Fragment事务添加到后台堆栈。将事务添加到后台堆栈时,这意味着当用户回击时,最后一个事务将被撤消。因此,如果您添加片段A并删除片段B,则按下将删除片段A并添加片段B(并恢复片段B的某些已保存状态)。
对于您的第一个事务,您只是将一个片段添加到Activity中,因此反转将删除片段,因此不显示任何内容。所以只是不要将第一个事务添加到后台堆栈(假设你这样做了......我无法知道,因为你只粘贴了一小段代码)。
答案 2 :(得分:0)
我通常使用android示例FragmentTabs来管理标签,我没有遇到过这个问题。如果没有看到完整的源代码,很难确切地说出它发生了什么。但是,如果你没有使用FragmentTabs
,那么你可以尝试迁移到那个,因为它已经过全面测试;)