Android 如何知道哪个视图具有当前焦点

Android 如何知道哪个视图具有当前焦点,android,focus,Android,Focus,我把焦点放在一个视图上,但当我改变方向时,焦点就从那个视图上消失了。 onConfigurationChanged()是否处理焦点? 或者我需要显式地设置它,如果是,那么如何设置焦点? 我需要跟踪当前聚焦视图。如何做到这一点?覆盖活动中的onSaveInstanceState和onRestoreInstanceState方法。然后,通过获取视图的ID并将其保存到onSaveInstanceState方法中的捆绑包中,可以跟踪具有焦点的任何视图。然后在onRestoreInstanceState方

我把焦点放在一个视图上,但当我改变方向时,焦点就从那个视图上消失了。 onConfigurationChanged()是否处理焦点? 或者我需要显式地设置它,如果是,那么如何设置焦点?
我需要跟踪当前聚焦视图。如何做到这一点?

覆盖活动中的onSaveInstanceState和onRestoreInstanceState方法。然后,通过获取视图的ID并将其保存到onSaveInstanceState方法中的捆绑包中,可以跟踪具有焦点的任何视图。然后在onRestoreInstanceState方法中,您只需获取ID并找到具有该ID的视图。您甚至不需要强制转换它或任何东西。然后,您只需请求该视图的焦点。它将如下所示:

@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();        
}

重写活动中的onSaveInstanceState和onRestoreInstanceState方法。然后,通过获取视图的ID并将其保存到onSaveInstanceState方法中的捆绑包中,可以跟踪具有焦点的任何视图。然后在onRestoreInstanceState方法中,您只需获取ID并找到具有该ID的视图。您甚至不需要强制转换它或任何东西。然后,您只需请求该视图的焦点。它将如下所示:

@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();        
}