("안드로이드 스튜디오 :: Activity(화면) 전환하기 #1" 참조)
안드로이드 스튜디오에서 Activity간의 데이터(값)를 주는 방법을 알아보자
1. 테스트를 위해 전달할 값을 입력할 EditText필드 두 개와 전달 버튼 하나를 만들어준다.
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<EditText
android:id="@+id/id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="text"
tools:ignore="LabelFor"
android:hint="ID"
android:importantForAutofill="no" />
<EditText
android:id="@+id/number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="number"
tools:ignore="LabelFor"
android:hint="number"
android:importantForAutofill="no" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="버튼1"/>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
id와 회원번호(number)를 입력할 EidtText필드와
2번째 액티비티를 생성시켜 값을 넘겨줄 버튼 1개 생성
안드로이드 스튜디오 :: 앱 만들기 기초 #3 (버튼 만들기)
2. 값을 전달받을 새로운 액티비티를 만든다.
(1) File > New > Activity > Empty Activity를 클릭해서 새로운 액티비티를 추가한다.
액티비티를 추가하면 자동으로 관련 레이아웃 파일이 생성된다. 값을 제대로 전달받았는지 확인하기 위해 TextView를 만든다.
<RelativeLayout
android:layout_height="match_parent"
android:layout_width="match_parent">
<TextView
android:id="@+id/data"
android:layout_height="wrap_content"
android:layout_width="wrap_content" />
</RelativeLayout>
(2) Manifest 파일 수정
파일 경로 (app > manifests > AndroidManifest.xml)를 통해 매니페스트 파일을 열면 생성한 SubActivity.class에 관련된 코드가 자동으로 삽입되어 있는 것을 볼 수 있다.
<application
...
<activity android:name=".SubActivity"></activity>
...
</application>
여기에 parentActivityName 속성을 추가하여 액티비티 상단에 뒤로가기 아이콘을 표시한다. 취소버튼으로도 동일한 기능을 할 수 있지만 이전 액티비티와의 상관관계를 더 직관적으로 보여주고 사용자에게 편의성을 제공할 수 있다.
<application
...
<activity
android:name=".SubActivity"
android:parentActivityName=".MainActivity"></activity>
...
</application>
3. 값을 저장하고 새로운 액티비티(화면)를 띄운다.
(1) MainActivity.java
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final EditText id = findViewById(R.id.id);
final EditText number = findViewById(R.id.number);
final Button button1 = findViewById(R.id.button1);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(v.getContext(), SubActivity.class);
intent.putExtra("id", id.getText().toString());
intent.putExtra("number", number.getText().toString());
startActivity(intent);
}
});
}
}
4. 전달한 값 가져오기
(1) SubActivity.java
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
public class SubActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sub);
TextView data = findViewById(R.id.data);
Intent intent = getIntent();
String id = intent.getStringExtra("id");
int number = Integer.valueOf(intent.getStringExtra("number"));
data.setText("id는 " + id + ", 회원번호는 " + number);
}
}
데이터가 잘 전달되는 것을 확인할 수 있습니다.
'Android > Java' 카테고리의 다른 글
안드로이드 스튜디오 :: Java :: 알림 만들기(Notification) (0) | 2020.10.13 |
---|---|
안드로이드 스튜디오 :: Java :: Activity(화면) 값 전달받기 (0) | 2020.06.25 |
안드로이드 스튜디오 :: Java :: Activity(화면) 전환하기 (0) | 2020.06.25 |
안드로이드 스튜디오 :: Java :: 앱 만들기 기초 #3 (버튼 만들기) (0) | 2020.06.25 |
댓글