액티비티 간의 양방향 데이터 전달 방법
- 메인 액티비티에서 데이터를 가지고 세컨드 액티비티로 전달하여 실행
1. 첫 번째 액티비티에 다른 액티비티를 실행시키는 코드를 작성한다.
- Intent 클래스 사용
// 처음 화면 액티비티.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.i("LIFE MAIN", "onCreate 실행");
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String name = editName.getText().toString().trim();
String strAge = editAge.getText().toString().trim();
int age = Integer.parseInt(strAge);
// 다른 엑티비티를 실행시키는 코드
// 인텐드를 만든다.
// 인텐드란? 어떤 엑티비티가 어떤 엑티비티를 띄우겠다 라는 의도이다.
// 다음 엑티비티와 이어주는 코드
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
// 엑티비티에 데이터를 전달하는 방법
intent.putExtra("name",name);
intent.putExtra("age",age);
startActivity(intent);
}
});
}
2. 다음 액티비티 화면에서 받은 데이터를 보여주기 위해 데이터를 받아서 변수로 저장한다.
- getIntent() 사용
- 문자열이 아닌 숫자 데이터타입이면, 디폴트 값을 설정해줘야 한다.
// 두번째 화면 액티비티.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
Log.i("LIFE MAIN", "두번째 엑티비티 onCreate 실행");
// 데이터 받아주기
String name = getIntent().getStringExtra("name");
// getIntExtra(보낸이름, 디폴트 숫자)
age = getIntent().getIntExtra("age", 0);
age = age+10;
txtName = findViewById(R.id.txtName);
txtAge = findViewById(R.id.txtAge);
txtName.setText("이름은 "+name);
txtAge.setText("10년 후 나이는 "+age+"세 ");
}
* 포스팅. 액티비티 간의 단방향 데이터 전달 방법
https://msdev-st.tistory.com/177
* 포스팅. 액티비티 백버튼 누를 때 데이터 전달 방법
https://msdev-st.tistory.com/179
* LifeCycle
https://developer.android.com/guide/components/activities/activity-lifecycle?hl=ko