Android (안드로이드)

[Android] Intent 인텐트 (2) - 액티비티 데이터 전달 / 액티비티 값 전달 / 액티비티 데이터 이동

Oscar:) 2022. 8. 23. 19:24

 

지난 포스팅에 이어 이번 포스팅에서는 인텐트를 사용하여

액티비티 간 데이터를 주고 받는 방법에 대해 알아보자.

 

인텐트 (1) 포스팅에서 사용하던 코드를 재탕하겠다.

 

 


 

먼저, 데이터를 보내주는 인텐트의 문법은 다음과 같다.

                Intent i = new Intent(MainActivity.this,SecondActivity.class);
                i.putExtra(Key,Value); // 이 부분만 추가된다.
                startActivity(i);

 

인텐트를 이용해 액티비티를 전환하는 문법에서 한 줄만 추가해주면 된다.

 

putExtra() 메서드로 웬만한 건  거의 담을 수 있다.

정말 웬만한 건 다 있다

 

putExtra() 괄호 안의 인자 값은 대부분,

Key - Value 형식으로 이루어져 있다.

 

Key 값은 식별자 역할을 해준다.

Key 값이 일치하면 Value 값을 내준다.

 

즉, 일치하는 Key 값에 해당하는 Value 값의 데이터를 전달해 주는 것이다.

 

 

이제 코드를 작성해보자.

 


1. 데이터를 전달해야 하니,

값을 입력할 EditText 를 추가해준다.

 

activity_main.xml

    <EditText
        android:id="@+id/name_EditText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:hint="이름을 입력하세요"
        />

    <EditText
        android:id="@+id/age_EditText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:hint="나이를 입력하세요"
        />

 

 

hint : 미리보기로 보여질 텍스트를 표시해준다.

 

 

MainActivity 레이아웃

 

 


2. java 파일을 작성해주자.

 

MainActivity.java

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.d(TAG, "onCreate() 호출됨");

        EditText name_EditText = findViewById(R.id.name_EditText);
        EditText age_EditText = findViewById(R.id.age_EditText);
        Button button = findViewById(R.id.change_Btn);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                String name = name_EditText.getText().toString();
                String age = age_EditText.getText().toString();

                Intent i = new Intent(MainActivity.this,SecondActivity.class);
                i.putExtra("이름",name);
                i.putExtra("나이",age);
                startActivity(i);
            }
        });

    }

 

button 을 클릭했을 때, EditText 값을 String 변수에 담아서

인텐트로 데이터를 전달하며 액티비티를 전환하는 과정이다.

 

 

EditText 에서 입력 받은 값을 String 으로 변환시켜주어야 한다.

 

getText() : EditText 에서 데이터를 받고

toString() : String 으로 형변환 해준다.

 

Key 값은 "이름", "나이"

Value 값은 변수 name, age 가 된다.

 

 


3. B 액티비티를 작성해준다.

 

activity_second.xml

    <TextView
        android:id="@+id/name_Text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="이 름"
        android:textSize="25dp"
        />

    <TextView
        android:id="@+id/age_Text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="나 이"
        android:textSize="25dp"
        />

전달 받은 데이터를 표시해줄 TextView 2개를 추가해준다.

 

 

SecondActivity 레이아웃

 

 

SecondActivity.java

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        Log.d(TAG, "onCreate() 호출됨");

        TextView name_Text = findViewById(R.id.name_Text);
        TextView age_Text = findViewById(R.id.age_Text);
        Button button = findViewById(R.id.back_Btn);

        // 인텐트 값 전달 받음
        Intent i = getIntent();
        
        // Key 값으로 식별하여 String 변수에 초기화
        String name = i.getStringExtra("이름");
        String age = i.getStringExtra("나이");
        
        // TextView 에 setText 로 뿌려줌
        name_Text.setText(name);
        age_Text.setText(age);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                finish();
            }
        });

    }

 

getIntent() 로 데이터를 전달 받고,

 

A 액티비티에서 작성한 Key 값으로 식별하여

String 변수에 초기화해준다.

 

표시할 TextView 에 setText 해준다.

 

 

데이터를 받아올 때는 getExtra 가 아닌,
getStringExtra 와 같이 자료형을 지정해 줘야 한다.

String 의 경우 Key 값만 작성해 줘도 되지만,
int 나 boolean 의 경우 두 번째 인자에 default 값을 작성해 줘야 한다.

데이터 전달에 실패할 경우 default 값이 리턴된다. (String 은 null)

 

 


 

4. 이제 앱을 실행시켜서 값을 입력해보자.

 

 

위처럼 이름과 나이를 입력하고, 이동 버튼을 눌러보자.

 

 

 

데이터가 잘 전달되었다 !

 


 

 

이제 액티비티 전환 시, 데이터를 전달할 수 있게 되었다.

 

별 것 아니지만, 안드로이드 공부를 시작하고

처음 데이터 전달에 성공했을 때 정말 뿌듯했던 기억이 남아있다.