26

基本的にはの機能が必要ですonWindowFocusChanged()が、Fragment. 残念ながら、onWindowFocusChanged()リスナーは実際にはフラグメントに使用できないため、どうすればよいかわかりません。

これを行う方法はありますか?

4

3 に答える 3

57

Viewフラグメントは、に戻る を介して「描画」されonCreateView()ます。その中でイベントハンドラーを使用できます。通常、最初に表示されたときに実行する必要があるコマンドがある場合はView、それを に割り当てて、メソッドを介してRunnableにアタッチできます。Viewpost()

getView().post(new Runnable() {
    @Override
    public void run() {
      // code you want to run when view is visible for the first time
    }
  }
)
于 2012-11-06T16:18:32.160 に答える
0

onWindowFocusChanged(boolean hasFocus) メソッドはアクティビティで呼び出しますが、フラグメントが描画されると、メソッド onActivitycreated() で確認できます。この投稿を確認して ください https://stackoverflow.com/a/32819850/2732632

于 2015-09-28T09:40:38.310 に答える
-3

OnWindowFocusChanged は、ビューの描画に関する情報を提供しません (または表示されませんでした)。フラグメントにフォーカスを持つことができる各ビューに OnWindowFocusChanged を実装します。疑似コードで:

Fragment implements OnWindowFocusChanged{

onCreate(){

btn.OnWindowFocusChanged(this);
editTxt.OnWindowFocusChanged(this);
....

}

public void OnWindowFocusChanged(boolean hasFocus){
// your fragment has focus
}

}
于 2012-11-06T16:19:23.930 に答える