繁体   English   中英

Android-如何显示Backstack片段

[英]Android - How to display Backstack Fragment

当单击btn将显示Fragment 1,当我按btn2时,将显示Fragment 2,并且我相信将Fragment 1放在后堆栈中。 第二次,当我单击btn ,我想显示其先前的状态。 我将包含使我非常困惑的代码,但我不确定该怎么做。

btn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String str = "frag1";
Fragment videoFragment = new VideoPlayerFragment();
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
transaction.replace(R.id.child_fragment, videoFragment, str);
transaction.addToBackStack(null);
transaction.commit(); 
}
});

btn2.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String str2 ="frag1";
String str3 ="frag2";
//FragmentManager.BackStackEntry backEntry=
//getFragmentManager().getBackStackEntryAt(getActivity().getFragmentManager().
//getBackStackEntryCount()-1);
//String str3 = backEntry.getName();
//Fragment fragment= getFragmentManager().findFragmentByTag(str3);

Fragment videoFragment = new CopyOfVideoPlayerFragment();
FragmentTransaction transaction2 = getFragmentManager().beginTransaction();
transaction2.addToBackStack(str2);
transaction2.replace(R.id.child_fragment, videoFragment, str3);
transaction2.commit(); 
}
});

令人困惑的代码,无法正常工作:

FragmentManager.BackStackEntry backEntry=getFragmentManager().getBackStackEntryAt(getActivity().getFragmentManager().getBackStackEntryCount()-1);
String str3 = backEntry.getName();
Fragment fragment= getFragmentManager().findFragmentByTag(str3);

要显示前一个片段(backStack中的片段),请使用以下代码:

getSupportFragmentManager().executePendingTransaction();

我认为以下方法可以满足您的要求,

1.创建一个片段管理器来保存这两个片段的引用。

2.每次单击按钮时,删除旧的,添加新的。

编码

     FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
     ft.remove(fragment1);
     ft.add(fragment2);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM