6

個々のフラグメントのビューの setText および getText を実行できるようにしたいと考えています。今のように、Framgent の TextView のテキストを設定すると、すべてのフラグメントでそのビューのテキストが変更されます。

私は物事を動かして実験してきましたが、現時点での私のコードは次のとおりです。

フラグメントクラス

public class TestFragment extends Fragment{

    View view;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.test_fragment, container, false);
        TextView tv = (TextView) view.findViewById(R.id.huh);
        //tv.setText("AAAAAAAAAAAAAAAAAAA");

        return view;
    }

    public void setText(String asdf) {
        TextView test = (TextView) view.findViewById(R.id.huh);
        test.setText(asdf);
    }


}

活動クラス

    public class Manage extends BaseActivity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.manage);

        FragmentManager fragmentManager = getSupportFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        TestFragment fragment = new TestFragment();
        //fragment.setText("ASDF");
        fragmentTransaction.add(R.id.test_fragment, fragment, "testtag");
        fragmentTransaction.commit();
    }
}

framgent.xml は非常に単純です。1 つの TextView だけです。

4

1 に答える 1

9

フラグメントは、tag という名前のパラメーターを使用してスタックに追加されます。あなたの場合、「testtag」でフラグメントを追加しました。

fragmentTransaction.add(R.id.test_fragment, fragment, "testtag");

同じフラグメントの複数のインスタンスを作成し、それらを一意のタグで追加すると、その一意のタグでそれらを取得できます。フラグメントを取得すると、そのコンテンツに到達できます。

FragmentManager fm = this.getSupportFragmentManager();
Fragment testtagFragment = fm.findFragmentByTag("testtag"); 
View targetView = testtagFragment.getView().findViewById(R.id.anyViewInsideContentOfYourFragment);

編集:

個々のフラグメントのビューの setText および getText を実行できるようにしたいと考えています。

この質問には 2 つの部分があります。

  1. 初期化中にテキストを設定するには、インスタンスの作成中にフラグメントに初期パラメーターを渡す必要があります。これには静的newInstanceメソッドを使用することをお勧めします。サンプルはこちら
  2. getText を取得するには、上記の私の回答をお読みください。onCreateViewメソッドの実行後にフラグメントのコンテンツを取得できることに注意してください。そのため、アクティビティの onCreate メソッドでフラグメントの getView メソッドを呼び出そうとすると (フラグメントを追加した後)、null が返されます。クリック イベントでそのコンテンツを正常に取得してテストし、そのフラグメントのコンテンツに対する任意のビューの get または set 操作を使用できます。
于 2013-11-03T20:30:16.980 に答える