0

嗨继我的代码,以显示从列表片段的细节片段更换片段,然后按回

getActivity().getSupportFragmentManager().beginTransaction().replace(R.id.FragmentContainer1, DealFragment.newInstance(dealItems, position, currentPage, totalCount)).addToBackStack(null).commit(); 

现在,当我按后退按钮,我得到新ListFragment.ListFragmnt状态不保存。

我提到一些栈的问题,但没有得到正确的答案

我想下面的代码,但是当应用程序在云背景和被杀害的系统(就像我从我的详细视图中打开铬,它会导致问题当我从Chrome浏览器返回时,我的应用程序关闭并最小化)FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction(); ft.hide(getActivity().getSupportFragmentManager().findFragmentById(containerId)); ft.add(containerId, detailFragment); ft.addToBackStack(null); ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); ft.commit();

当我移动到ListFragment以详细说明热维护状态的详细信息片段时,有关此问题的任何解决方案。

我已经提到这个链接从堆栈溢出here is the link

我想要的功能相同的Gmail应用程序时,我们从列表中的细节去,回来列出片段。滚动位置,一切都保持未在我的情况发生

+0

您是否希望在按下bac后不会得到ListFragment? DetailFragment中的k按钮? – Sac

+0

no没有为listgfragment保存片段状态 – apk

+0

尝试按照我的回答覆盖onBackPressed。 – Sac

回答

0

试试这个:

@Override 
public void onBackPressed() { 
    if (getSupportFragmentManager().getBackStackEntryCount() > 0) { 
     getSupportFragmentManager().popBackStack(); 
    } else { 
     this.finish(); 
    } 
} 
+0

这没有帮助 – apk

+0

@apk其实隐藏第一个片段是个好主意。那么使用第二种方法有哪些问题? – Sac

+0

已更新的问题与问题 – apk

0

在你的活动设置的第一个片段:

 ListFragment listFragment = new ListFragment(); 
     FragmentTransaction transaction = getFragmentManager().beginTransaction(); 
     transaction.add(R.id.FragmentContainer1, listFragment); 
     transaction.addToBackStack(null); 
     transaction.commit(); 

然后在listfragment呼叫细节片段:

 DetailFragment detailFragment = new DetailFragment(); 
     FragmentTransaction transaction = getFragmentManager().beginTransaction(); 
     transaction.replace(R.id.FragmentContainer1, detailFragment); 
     transaction.addToBackStack(null); 
     transaction.commit(); 
+0

再次阅读问题这不是我的问题 – apk

+0

是的,如果您不覆盖onBackPressed,这将保留您在上一个片段中的最后一个已知状态。或者如果你愿意,没有什么会改变。 – tompadre

+0

你还没有得到正确的答案 – apk