Language/Android Studio

[Android] Intent를 이용한 사용자 입력 값 다른 Activity 전달 | Yoon's Dev

Yooniron 2021. 4. 13. 21:47

[Android] Intent를 이용한 사용자 입력 값 다른 Activity 전달

 


TO Do.

- 사용자 입력 정보를 전달할 수 있도록 구현

- 버튼의 글씨의 대소문자 구분 처리 및 EditText에 MultiLine 적용 등 위젯 속성 변경 방법 확인

 

 

 

* 해당 글은 안드로이드 스튜디오 4.1.2 기준으로 설명되었습니다. *


목표: activity_main.xml의 editText의 내용을 activity_2.xml로 입력값을 전달

 


1. 레이아웃 구성

 

 

activity_main.xml

 

 

editText의 id값 : main_edit_input

 

editText의 id 값

 

editText의 Constraint Widget은 하단의 Button이 위치해있고 위 TextView에 맞춰서 화면을 차지하고 싶기에

editText -> 하단의 Button으로 연결해주었다.

그리고 layout_width와 layout_height는 match_constraint로 설정.

 

 

width와 height는 match_constraint

 

그리고 난 뒤 입력을 여러 줄로 표현하기 위해 android:inputType="textMultiLine"을 주었다.

글씨 크기는 가독성을 위해 24sp!

 

 

main_edit_input의 속성

 

 

다음은 버튼을 만들어주자.

 

 

값 전달 버튼인 Move와 종료 Close버튼

 

Move 버튼의 id 값: main_btn_move

Close 버튼의 id 값: main_btn_close

 

이렇게 첫 번째 activity_main의 레이아웃이 끝났고 다음 activity_2로 넘어가 보도록 하자.

 

 

activity_2.xml

 

activity_2의 textView id값: a2_text_result

 

 

activity_2의 textView id값

 

 

 

CLOSE 버튼

 

CLOSE 버튼의 id 값: a2_btn_close


 

2. Java Class 파일(기능 구현)

 

1)MainActivity.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package com.example.practice04;
 
import androidx.appcompat.app.AppCompatActivity;
 
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
 
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
 
    EditText input;
    Button btn01, btn02;
 
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        input = (EditText)findViewById(R.id.main_edit_input);
 
        btn01 = (Button)findViewById(R.id.main_btn_move);
        btn02 = (Button)findViewById(R.id.main_btn_close);
 
        btn01.setOnClickListener(this);
        btn02.setOnClickListener(this);
    }
 
    @Override
    public void onClick(View v) {
        if(v.getId() == R.id.main_btn_move) {
            // 데이터 첨부를하고 액티비티 실행
            String temp = input.getText().toString();
            Intent intent01 = new Intent(this, Activity2.class);
            intent01.putExtra("key01", temp);
            startActivity(intent01);
        }
        if (v.getId() == R.id.main_btn_close) {
            // 종료
            finish();
        }
    }
}
cs

View.OnClickListener 연결 및 구현

 

1) main_btn_move 클릭 시 // editText에 작성된 내용을 Activity_2로 전달

 input(editText)의 값을 getText()로 뽑아서 toString 문자열로 변환해서 temp에 저장! temp는 보낼 데이터

 inten01안에 new Intent( packageContext:this, Activity2.class) //this는 MainActivity.this와 동일하다

                 **new Intent( 보내는 애, 받는 애 )

intent01.putExtra(name:"key01", temp) //key01이란 이름으로 temp를 보내겠다!

 

 

2)main_btn_close 클릭 시

 

finish(); // 종료

 

 

2)Activity2.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package com.example.practice04;
 
import androidx.appcompat.app.AppCompatActivity;
 
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
 
public class Activity2 extends AppCompatActivity implements View.OnClickListener {
 
    Button btn01;
    TextView result_textView;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_2);
 
        btn01 = (Button)findViewById(R.id.a2_btn_close);
        btn01.setOnClickListener(this);
 
        result_textView = (TextView)findViewById(R.id.a2_text_result);
 
        Intent receive_intent = getIntent();
 
        String temp = receive_intent.getStringExtra("key01");
 
        result_textView.setText(temp);
    }
 
    @Override
    public void onClick(View v) {
        //액티비티 종료
        finish();
    }
}
cs

*전달된 데이터에 대한 처리

  Intent receive_intent = getIntent();

  String temp = receive_intent.getStringExtra("key01");

 

이렇게 전달된 데이터를 갖고 result_textViewsetText(temp);를 해주면 두 번째 레이아웃의 editText가 변경될 것이다.

 


 

3. 실행결과

 

실행 결과