본문 바로가기

open coding

open coding. 안드로이드 스튜디오 화면회전시 data유지 /화면고정/

반응형

1. 안드로이드 스튜디오 화면회전해도 data들 그대로 유지.

2. 안드로이드 스튜디오 화면회전 막기/ 화면고정

.......................................................

1. 안드로이드 스튜디오 화면회전해도 data들 그대로 유지. (코딩)

<MainActivity>

package com.example.orientation;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    //세로, 가로 화면 각각 화면설정했음. - 각 화면의 editText, textView의 id는 같게 해야 코딩 편하다.
    //button은 onclick이용할꺼라 id동일여부 딱히 신경 안써도 됨.

    //define variables
    EditText edit1;
    TextView text1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //connect to xml id
        edit1 = findViewById(R.id.editTextTextPersonName);  //가로화면, 세로화면 id 동일
        text1 = findViewById(R.id.textView);                //가로화면, 세로화면 id 동일

        //화면회전시, 화면복원위한 data
        if(savedInstanceState != null){ //화면회전전에는 null 값이다.
            String str2 = savedInstanceState.getString("data1"); //아래 method의 값가져오기.
            text1.setText(str2);
        }

    }//finish

//버튼 클릭시, editText의 입력내용 textView에 띄우기 method - > onclick 설정도
    public void btnMethod(View view){
        String str = edit1.getText().toString();
        text1.setText(str);
    }//finish


//app 실행후 화면회전해본니, 화면회전 후 textView의 data가 초기화 되어버린다.
//화면 회전시, 초기화 방지위한 data 저장(editText는 data가 보존되는거 확인했으니, textView만 한다.)
    @Override
    protected void onSaveInstanceState(@NonNull Bundle outState) {
        super.onSaveInstanceState(outState);

        //화면 회전시, 화면복원에 필요한 data 저장
        outState.putString("data1", text1.getText().toString());     //key, value
                                                                //onCreate의 변수 SavedInstanceState로 받을거다.
    }//finish-> 적용 ㄱㄱ


}

 

2. 안드로이드 스튜디오 화면회전 막기/ 화면고정 (코딩)

 Manifest의 .MainActivity에 screenOrientation 설정.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.orientation">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity"
            android:screenOrientation="portrait">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

</manifest>


<!--화면고정을 위해 추가한 사항
mainActivity에 screenOrientation 설정.-->