[Android] Intent를 이용한 사용자 입력 값 다른 Activity 전달
TO Do.
- 사용자 입력 정보를 전달할 수 있도록 구현
- 버튼의 글씨의 대소문자 구분 처리 및 EditText에 MultiLine 적용 등 위젯 속성 변경 방법 확인
* 해당 글은 안드로이드 스튜디오 4.1.2 기준으로 설명되었습니다. *
목표: activity_main.xml의 editText의 내용을 activity_2.xml로 입력값을 전달
1. 레이아웃 구성
editText의 id값 : main_edit_input
editText의 Constraint Widget은 하단의 Button이 위치해있고 위 TextView에 맞춰서 화면을 차지하고 싶기에
editText -> 하단의 Button으로 연결해주었다.
그리고 layout_width와 layout_height는 match_constraint로 설정.
그리고 난 뒤 입력을 여러 줄로 표현하기 위해 android:inputType="textMultiLine"을 주었다.
글씨 크기는 가독성을 위해 24sp!
다음은 버튼을 만들어주자.
Move 버튼의 id 값: main_btn_move
Close 버튼의 id 값: main_btn_close
이렇게 첫 번째 activity_main의 레이아웃이 끝났고 다음 activity_2로 넘어가 보도록 하자.
activity_2의 textView id값: a2_text_result
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_textView에 setText(temp);를 해주면 두 번째 레이아웃의 editText가 변경될 것이다.
3. 실행결과
'Language > Android Studio' 카테고리의 다른 글
[Android] Adapter(어댑터) | Yoon's Dev (0) | 2021.06.14 |
---|---|
[Android] 안드로이드 기본 이벤트 처리 | Yoon's Dev (0) | 2021.06.13 |
[Android] 안드로이드 프레퍼런스(Preference)를 이용한 설정 정보 값 저장하기 | Yoon's Dev (1) | 2021.05.04 |
[Android] 액티비티(Activity) 상태와 생명주기 | Yoon's Dev (0) | 2021.05.02 |
[Android] 안드로이드(Android) 프로젝트 구조 | Yoon's Dev (0) | 2021.04.25 |