0

ViewPager のコンセプトでフラグメントを扱っています。データベースからすべての更新を取得して表示するフラグメントを1つだけ使用している日記アプリを作成しています。これまではすべて問題ありません...私の要件によれば、フラグメントのボタンをクリックすると、ユーザーが画像を保存できるようにする別のフラグメントを表示する必要があります。私の問題は.....

--フラグメントでreplaceメソッドを使用すると、Aがビューページャーで構成されるフラグメントであり、Bが置換したいフラグメントである場合、適切に置換されませんでした。
--次に、replace B を使用すると、B が表示されますが、A もフラグメント B の下に表示されます

FragmentManager m=getActivity().getSupportFragmentManager();
                FragmentTransaction ft = getActivity().getSupportFragmentManager()
                        .beginTransaction();
                Demobutton demobutton = new Demobutton();

                ft.replace(R.id.lay, demobutton);
                ft.commit();

皆さんが私の問題を理解してくれることを願っています。私の質問が不完全だと思われる場合は、そのことをお知らせください。

4

2 に答える 2

0

DemoButton Fragment の使用方法に応じて、2 つの提案があります。

1) ネストされたフラグメントに問題がある可能性があります。アクティビティから FragmentManager を取得しますが、Demobutton が既にフラグメントの一部である場合は、代わりに外側のフラグメントの getChildFragmentManager() を使用します。

2) Fragments で ViewPager を使用するときの私の経験から、ViewPager の PagerAdapter はすべてのフラグメント トランザクションを実行する必要があります。必要なときに ViewPager で正しいフラグメントを取得するために、サポート ライブラリからクラス FragmentPagerAdapter を拡張して上書きすることができます。

于 2013-05-29T07:20:19.303 に答える
0

ネイティブ クラスを上書きせずにこれを実現する小さなサンプル アプリを開発しました。

ポイントは、フラグメントをコンテナーとして使用することです。

ViewPagerAdapter で:

@Override
public Fragment getItem(int position) {
    /*
     * IMPORTANT: This is the point. We create a RootFragment acting as
     * a container for other fragments
     */
    if (position == 0)
        return new RootFragment();
    else
        return new StaticFragment();
}

RootFragment レイアウトは次のようになります。

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:id="@+id/root_frame" >
</FrameLayout>

ここで私の完全な説明を確認できます: https://stackoverflow.com/a/21453571/1631136

于 2014-01-30T10:21:34.527 に答える