onWindowFocusChanged在Lollipop中不起作用?

时间:2015-12-17 12:30:13

标签: android

我试图在应用程序中使用onWindowFocusChanged,但他们不支持棒棒糖。

@Override
public void onWindowFocusChanged(boolean hasFocus) {

    super.onWindowFocusChanged(hasFocus);
    Log.e(TAG, "onWindowFocusChanged, " + hasFocus);
    mWindowhasFocus = hasFocus;

}

1 个答案:

答案 0 :(得分:0)

不,它实际上是在制作Lollipop(甚至在Marshmallow上 - 我检查过)。

关于此方法的

The documentation说:

  

当活动的当前窗口获得或失去焦点时调用。   这是该活动是否可见的最佳指标   用户。默认实现清除密钥跟踪状态,因此   应该永远被召唤。

我写了一个非常简单的单活动测试应用程序: MainActivity.java

public class MainActivity extends AppCompatActivity {

    TextView statusTextView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        statusTextView = (TextView)findViewById(R.id.statusTextView);
    }

    @Override
    public void onWindowFocusChanged(boolean hasFocus) {
        super.onWindowFocusChanged(hasFocus);
        String newStatus = statusTextView.getText() + (hasFocus? "Got focus" : "Lost focus") + "\n";
        statusTextView.setText(newStatus);
    }
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="16dp">
    <TextView
        android:id="@+id/statusTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</RelativeLayout>

因此,通过来回移动应用程序到后台,您可以看到状态如何变化。

相关问题