我正在将焦点放在一个 View 上,但是当我改变方向时,该 View 的焦点就会丢失。 onConfigurationChanged() 处理焦点吗? 或者我需要明确设置它,如果是,那么我该如何设置焦点? 我需要跟踪当前的聚焦 View 。该怎么做?
最佳答案
在您的 Activity 中覆盖 onSaveInstanceState 和 onRestoreInstanceState 方法。然后,您可以通过获取 View 的 ID 并将其保存到 onSaveInstanceState 方法中的 Bundle 来跟踪任何具有焦点的 View 。然后在 onRestoreInstanceState 方法中,您只需获取 ID 并找到具有该 ID 的 View 。你甚至不需要施放它或任何东西。然后您只需请求该 View 的焦点。它看起来像这样:
@Override
protected void onSaveInstanceState(Bundle outState) {
int viewId = this.getCurrentFocus().getId();
outState.putInt("hasFocus", viewId);
super.onSaveInstanceState(outState);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
int viewId = savedInstanceState.getInt("hasFocus");
View view = findViewById(viewId);
view.requestFocus();
}
关于android - 如何知道哪个 View 具有当前焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7858760/