0

私のAndroidアプリでは、xmlレイアウトでフラグメントを定義しました。コードは以下のとおりです。

<fragment
    android:id="@+id/list_fragment"
    android:layout_width="220dp"
    android:layout_height="fill_parent"
    android:layout_marginLeft="62dp"
    android:layout_marginTop="20dp"
    class="com.example.shantaportfolio.ListFragment" />

classしかし、Javaコードからフラグメントの属性を変更する必要があります。どうすればいいですか?どの方法を使用しますか?

4

4 に答える 4

1

.xmlファイルで変更<fragment/>する必要があります<FrameLayout/>

<fragment
    android:id="@+id/list_fragment"
    android:layout_width="220dp"
    android:layout_height="fill_parent"
    android:layout_marginLeft="62dp"
    android:layout_marginTop="20dp"
/>

次に、Javaコードを使用してプログラムでフラグメントを追加します

FragmentManager fragmentManager = getFragmentManager()
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
ListFragment fragment = new ListFragment();
fragmentTransaction.replace(R.id.list_fragment, fragment);
fragmentTransaction.commit();

詳細については、 http://developer.android.com/guide/topics/fundamentals/fragments.htmlをご覧ください。

于 2013-03-11T13:52:37.453 に答える
1

レイアウトの実装を置き換えるだけの場合はFragment、「コンテナ要素」をレイアウトに挿入し、Fragmentそこに設定します。

レイアウト内:

<FrameLayout
        android:id="@+id/fragment_container"
        android:layout_width="match_parent"
        android:layout_height="0dp">
</FrameLayout>

コード内:

final FragmentTransaction tx = this.getFragmentManager().beginTransaction();
tx.replace(R.id.fragment_container, aFragment);
tx.commit();
于 2013-03-11T13:44:00.427 に答える
0

LayoutInflator宣言されたフラグメントのインスタンス化をインターセプトすることはできません。ただし、後でアクティビティ内のフラグメントを別のフラグメントに置換()することができます。

アップデート:

の実装をLayoutInflator.Factory使用し、そのonCreateView()メソッドを使用して、レイアウト内の特定のタグに対して異なる処理を実行できます。

このファクトリ実装をLayoutInflator使用するために提供しますsetFactory()

于 2013-03-11T13:33:34.317 に答える
0

XMLで宣言されているフラグメントを変更することはできません。代わりに、フラグメントが属するコンテナーを宣言し、onCreate()アクティビティのメソッドで、このコンテナーにフラグメントをアタッチします。フラグメントを交換する場合は、メソッドを使用して、交換replaceするフラグメントを指定するだけです。

注:コンテナは通常LinearLayout、特定のサイズに配置することによって作成されます。以下は、画面サイズの2/3である左側と、1/3である右側のレイアウトを提供する単純なXMLレイアウトです。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:baselineAligned="false"
    android:orientation="horizontal" >

    <LinearLayout
        android:id="@+id/fragment_container_parent"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="2" />

    <LinearLayout
        android:id="@+id/fragment_container_child"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1" />

</LinearLayout>
于 2013-03-11T14:40:46.903 に答える