마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

화면 전환시 Activity내 view들 내용 초기화되는 것 문의드립니다.

0 추천

Activity 실행 화면에서

가로에서 세로로, 세로에서 가로로 전환시

Activity내의 각종 view들(버튼 Textview등)이 가지고 있는 값을 유지한 채 화면 전환을 하려고 합니다.

 

[AndroidManifest.xml] 파일에 configChanges 값을 추가하고,

        <activity
            android:name="com.example.testaaa.MainActivity"
            android:label="@string/app_name"
            android:configChanges="orientation|screenSize">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

 

Activity내에 콜백함수를 추가했습니다.

 public void onConfigurationChanged(Configuration newConfig) {
  // TODO Auto-generated method stub  
  super.onConfigurationChanged(newConfig);  
  if(newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
   setContentView(R.layout.activity_main_screen_vertical);
  } else if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
   setContentView(R.layout.activity_main_screen_horizontal);
  }

그리고,  onCreate에서는 textview를 하나 만들고 임의의 문자열을 지정햇습니다.

protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  tv1 = (TextView) findViewById(R.id.textView1);
  tv1.setText("SAMPLE TEXT");

}

위 대로 했을 때,

App을 실행하면 처음 onCreate실행후 SAMPLE TEXT란 글자가 표시됩니다.

하지만 rotate를 하면 글자가 사라집니다.

이후 다시 rotate를 해도 글자가 표시되지 않습니다.

 

제 예상은 tv1이란 textview가 가지고 있는 글자 내용이 화면 전환후에도

계속 표시될줄 알앗는데요 ㅡ.ㅡ.. ㅠ.ㅠ

 

혹시 왜 이러시는지 아시는 분 계신가요?

화면 전환할때 Activity재실행 되지 않고 onConfigurationChanged는 잘 호출됩니다.

Android 4.2.2(API 17) SDK 위에서 테스트중입니다.

 

아시는 분 있으면 답변 부탁드립니다.

국화향기 (430 포인트) 님이 2013년 6월 3일 질문
국화향기님이 2013년 6월 3일 수정

1개의 답변

0 추천

android:configChanges ="orientation|keyboard"

해당 엑티비티에 위의 옵션을 추가 해주시면 되겠습니다.

ThisPlus (46,920 포인트) 님이 2013년 6월 3일 답변
그 부분은 추가했구요.. 질문 내용이 조금 변경됐습니다.
onConfigurationChanged
오버라이드 빼주세요~~! 다시 뷰를 로드 하시는 군요~~~!
저 옵션 외에 어떠한 작업도 필요 하지 않습니다.
그리고 가로모드와 세로 모드 뷰를 따로 작성 하신것 같은데...
가로 모드와 세로 모드 의 구조 가 같다면....
뷰를 따로 구성 하기 보다는 스크롤 뷰 추가 만으로 쉽게 구현이 가능 합니다.~!
말씀하신대로 가로 세로 layout을 하나로 가야 겠네요.
Scroll 들어가게 해줘야 겠네요. 세로일때는 보기 불편하겠지만.

layout 나누니 view들 값 설정해주는 게 불편하네요.
...