2011-10-22 7 views
1

뷰에 포커스를두고 있지만 방향을 변경하면 포커스가 손실됩니다. onConfigurationChanged()가 포커스를 처리합니까? 또는 명시 적으로 설정해야하며 그렇다면 포커스를 어떻게 설정할 수 있습니까? 현재 초점보기를 추적해야합니다. 어떻게해야합니까?현재 포커스가있는 뷰를 확인하는 방법

답변

1

활동의 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();   
} 
관련 문제