1

クリックするbtnとフラグメント 1 が表示され、押すとbtn2フラグメント 2 が表示され、フラグメント 1 がバックスタックに配置されていると思います。2 回目に をクリックしたときに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);
4

2 に答える 2

0

次の方法で要件を達成できると思いますが、

1. この 2 つのフラグメントの参照を保持するフラグメント マネージャーを作成します。

2.ボタンをクリックするたびに、古いものを削除し、新しいものを追加します。

コード

     FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
     ft.remove(fragment1);
     ft.add(fragment2);
于 2013-07-19T12:36:48.333 に答える