1

編集モードと読み取り専用モードの2つの表示モードを持つフラグメントがあります。ユーザーは、両方のモードで使用可能なスピナーで選択されたステータス間を移動することにより、モードを切り替えることができます。

フラグメントが作成されたら、管理しているオブジェクトのステータスに基づいて、読み取り専用または編集レイアウトを選択して膨らませます。ユーザーが新しいステータスを選択すると、モードが読み取り専用モードから編集モードに切り替わる場合があります。これが発生した場合、編集ビューを読み取り専用ビューに置き換える必要があります。

フラグメント内の既存のビューを置き換えるにはどうすればよいですか?アクティビティでは、使用したいレイアウトでsetContentViewを呼び出します。

私はもう試した:

  • ビューを無効にしますが、onCreateViewは再度呼び出されません。
  • フラグメントをフラグメントトランザクションに置き換えますが、レイアウトは変更されません。

注:これはAndroid 4.0用であり、互換性ライブラリを使用できません。

4

1 に答える 1

1

すべてを 1 つのフラグメント内に保持したい場合:

ViewFlipperあなたのレイアウトがどのように見えるかは完全にはわかりませんが、両方のレイアウトを に投げて、選択したものに応じて表示される子を変更するだけだと思います。

フラグメント レイアウトの例

<LinearLayout android:orientation="vertical" ..>
    <Spinner ../>

    <ViewFlipper android:id="@+id/flipper" ..>
        <ReadOnlyLayout />
        <EditLayout />
    </ViewFlipper>

</LinearLayout>

次に、状態に応じて、 を使用して 2 つのレイアウトを簡単setDisplayedChild()に切り替えることができます。

ViewFlipper vf = (ViewFlipper) getView().findViewById(R.id.flipper);
vf.setDisplayedChild(1);

子インデックスは 0 から始まることに注意してください。

2 つの独立したフラグメントを使用することもできます(Barak の提案による)。単なるデザインの選択だと思います。

于 2012-06-08T16:08:47.537 に答える