728x90
안드로이드 설정 값의 변경이 발생하면, 기본적으로 시스템에서는 현재 액티비티를 폐기하고 새로 생성한다.
예를 들어 화면을 세로에서 가로로 변경하거나, 언어 설정, SIM 교체 등이 있다.
사용자가 앱 가입을 하기위해 정보를 AppcompatEditText등에 입력을 하였는데, 화면 모드 변경으로 인해 현재 액티비티를 폐기하고 새로 생성하면, 기존의 입력된 데이터가 모두 없어져서 사용자에게 불편함을 줄 수 있다.
따라서 이런 디바이스 설정 변경이 있을때는, Bundle 객체에 저장하였다가, onRestoreInstanceState을 오버라이드 하여, 값을 찾아 원래의 뷰에 담아주면 된다.
public class TestActivity extends AppCompatActivity {
public static final String TEST_KEY = "test_key";
private AppCompatTextView mTvTest;
private String mTestString;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
mTvTest = findViewById(R.id.activity_test_tv);
mTestString = mTvTest.getText().toString();
savedInstanceState.putString(TEST_KEY, mTestString);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
mTestString = savedInstanceState.getString(TEST_KEY);
}
}
728x90
'Android > Development Tips' 카테고리의 다른 글
안드로이드 패딩과 마진 (0) | 2018.12.12 |
---|---|
액티비티의 백스택, taskAffinity (0) | 2018.12.12 |
[Android] Sparse Array 와 HashMap 비교하기 (0) | 2018.11.08 |
xml에 백그라운드 이미지와 , 버튼 클릭효과 동시에 적용하기 (0) | 2018.11.08 |
[Android] Foreground 활용하기, 터치 이벤트 쉽게 적용하기 (0) | 2018.11.08 |