31

FragmentActivity追加する場所がありFragmentます。場合によっては、Buttonsそのフラグメントのレイアウトからアクセスしてクリックリスナーを変更したい。

私がすることは:

View view = myFragment.getView();
Button myButton = (Button) view.findViewById(R.id.my_button);
myButton.setOnClickListener(new MyClickListener());

しかし、view変数は常にnullです。

アクティビティのビューを取得するにはどうすればよいですか?

4

5 に答える 5

3

フラグメントで OnClickListeners を設定するにonViewCreatedは、フラグメント クラスでオーバーライドします。

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    view.findViewById(R.id.yourId).setOnClickListener(this);
    //or
    getActivity().findViewById(R.id.yourId).setOnClickListener(this);
}

フラグメントで webview を自動的にリロードするように timertask を設定しようとしていましたが、この方法が唯一の方法でした。私のプロジェクトはgithubにあります。

出典:この回答

于 2015-09-27T03:27:26.423 に答える
1

拡張するクラス内でボタンを初期化するときはFragment、メソッド内で行う方がよいでしょうonViewCreated()。これにより、ビューが既に存在することが保証されます。

于 2015-12-10T15:09:32.750 に答える
0

メソッドを使用してgetRootView()、Activity でフラグメントのデータを取得するだけです。

//below block of code write in activity.

EditText et = (EditText) v.getRootView().findViewById(R.id.name);
Log.d("Name", et.getText().toString());

name はフラグメントのフィールドです。

于 2016-11-23T07:54:05.180 に答える