26

基本上我需要的功能,onWindowFocusChanged()但在一个Fragment. 不幸的是,onWindowFocusChanged()侦听器实际上对片段不可用,所以我不确定该怎么做。

有什么办法可以做到这一点?

4

3 回答 3

57

片段是通过View您返回的“绘制”的onCreateView()。您可以在其中使用事件处理程序。通常,如果有一个命令需要在View第一次查看时运行,您可以将其分配在 a 中,并通过方法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 回答