我在我的Application.So中使用片段。我在主页上有一个5项目的网格视图,我将再次打开一个新片段。
所以正在发生的事情是在正在关闭应用程序之后显示一个空白屏幕。
请告诉我我在这方面做错了什么。
mycode的
gridView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View v, int arg2,
long arg3) {
if (DASHBOARD_LINKS[arg2].equals("A")) {
fragTran.replace(R.id.content_frame,
firstFrag);
fragTran.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
fragTran.addToBackStack(null);
fragTran.commit();
}
if (DASHBOARD_LINKS[arg2].equals("B")) {
fragTran.replace(R.id.content_frame, secondFrag);
fragTran.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
fragTran.addToBackStack(null);
fragTran.commit();
}
if (DASHBOARD_LINKS[arg2].equals("C")) {
fragTran.replace(R.id.content_frame, thirdFarg);
fragTran.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
fragTran.addToBackStack(null);
fragTran.commit();
}
}
});
请帮我解决这个问题
答案 0 :(得分:12)
我的建议是让片段调用addToBackStack(null)
。
但删除此行
addToBackStack(null)
来自主页,onbackpress
您将获得空白屏幕,希望这将为您服务。
答案 1 :(得分:3)
显示空白解决方案的片段。
addToBackStack
()方法的情况下添加第一个基本片段。因为它负责导航返回。我们不想从第一页回来。所以不要将它添加到backStack。fragmentTransacation.add
,则从片段A移动到片段B ,同时从B返回到A. onViewCreated
或onResume
方法不会在您添加片段时调用。因此,为了在返回片段A时点击onResume
或onViewCreated
,您应该调用fragmentTransaction.replace 答案 2 :(得分:1)
@Override
public void onBackPressed() {
int fragments = getSupportFragmentManager().getBackStackEntryCount();
if (fragments == 1) {
finish();
} else {
if (getFragmentManager().getBackStackEntryCount() > 1) {
getFragmentManager().popBackStack();
} else {
super.onBackPressed();
}
}
}
答案 3 :(得分:1)
addToBackStack()&lt; - 不要将此包含在您的第一个片段中.--&gt;
if(getSupportFragmentManager().getBackStackEntryCount() !=1){
fragmentTransaction.addToBackStack("placeholder");
}
答案 4 :(得分:1)
如果您将片段从一个活动导航到第二个活动的片段,则会发生这种情况。在替换你的片段时,你将它们添加到backstack中,所以不要将相应活动的第一个片段添加到backstack中。
答案 5 :(得分:0)
我假设您要处理后退按钮。您可以执行以下操作,
在Fragments
之间转换之前,请调用addToBackStack()
,如下所示,
fragTran.replace(R.id.content_frame, secondFrag);
fragTran.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
fragTran.addToBackStack("TAG");
fragTran.commit();
有关详细信息,请参阅此帖https://stackoverflow.com/a/7992472/1665507
答案 6 :(得分:0)
更新您的OncreateView()方法:
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
if (view != null) {
if (view.getParent() != null) {
((ViewGroup)view.getParent()).removeView(view);
}
return view;
}
View v=inflater.inflate(R.layout.tests, container, false);
希望这会有所帮助!