일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Algorithm
- TypeScript
- java
- Data Structure
- vscode
- 그레이들
- 프로그래머스
- BFS
- Javascript
- DFS
- Graph
- 안드로이드
- 리트코드
- Redux
- 동적 계획법
- VIM
- git
- 자바
- CS
- Database
- 다이나믹 프로그래밍
- Python
- 알고리즘
- db
- frontend
- DP
- network
- 백준
- LeetCode
- react
- Today
- Total
늘 겸손하게
안드로이드 activity간 데이터 주고 받기 본문
안녕하세요 besforyou입니다
이번 글에서는 activity 간 데이터를 주고받는 방법에 대하여 소개하겠습니다
Activity 호출과 함께 데이터 전달
MainActivity에서 아래와 같은 데이터가 있다고 가정합시다.
1
|
String data_to_send = "Hello world! I want to be rich!";
|
cs |
secondActivity라는 액티비티를 생성하면서 위의 데이터를 전달해야 한다면
1
|
Intent intent = new Intent(MainActivity.this, secondActivity.class);
|
cs |
우선 Intent를 생성하고
1
|
intent.putExtra("data", data_to_send);
|
cs |
intent의 putExtra 메소드로 전달할 데이터의 key와 전달할 데이터를 인자로 넣어둡니다.
1
|
startActivity(intent);
|
cs |
그 후에 secondActivity를 실행시키고
secondActivity에서
getIntent() 메소드로 intent를 가져옵니다.
1
|
Intent intent = getIntent();
|
cs |
그 후에 intent의 getStringExtra 메소드에 전달한 데이터의 key를 인자로 넣어주면 전달한 데이터를 받아올 수 있습니다.
1
|
String device_info = intent.getStringExtra("device_info");
|
cs |
Activity로부터 데이터 전달받기
먼저 activity를 실행할 때 startActivityForResult(intent, "..."); 로 액티비티를 실행시킵니다
1
2
3
4
5
6
7
8
9
|
public class MainActivity extends AppCompatActivity {
...
...
Intent intent = new Intent(this, secondActivity.class);
startActivityForResult(intent, 1234);
}
|
cs |
두 번째 인자는 Request Code로 결과값을 주는 액티비티를 구분하기 위한 사용자 정의 코드입니다.
그 후 secondActivity에서 MainActivity에 전달할 데이터 data_to_send가 있다고 가정합시다.
1
|
String data_to_send = "q24qrkjgawgj";
|
cs |
그런 뒤에 putExtra 메소드를 통해 전달할 데이터를 intent에 실은 후 setResult 메소드를 호출합니다.
1
2
3
4
5
6
7
8
|
String data_to_send = "q24qrkjgawgj";
Intent intent = new Intent(); // 다른 액티비티를 실행할것이 아니므로 빈 인텐드로 만들어 둠
intent.putExtra("data", data_to_send);
setResult(RESULT_OK, intent);
finish();
|
cs |
finish() 메소드의 호출로 액티비티가 종료되면 해당 인텐트가 이전 액티비티(MainActivity)로 전달됩니다.
이전 액티비티인 MainActivity에서 onActivityResult 메소드를 Override 하여 데이터를 전달받을 수 있습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
public class MainActivity extends AppCompatActivity {
...
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 1234 && resultCode == RESULT_OK){
String myData = data.getStringExtra("data");
textView.setText(myData);
}else{
textView.setText("No Data");
}
}
...
}
|
cs |
'Programming > Android' 카테고리의 다른 글
안드로이드 Activity와 상관없는 전역변수 (0) | 2021.08.09 |
---|---|
안드로이드 ImageView 동적 변환 ( Java ) (0) | 2021.08.06 |
안드로이드 디스플레이 넓이 높이 찾기 (0) | 2021.08.05 |
오류 Could not initialize class org.codehaus.groovy.vmplugin.v7.Java7 (0) | 2021.08.05 |
안드로이드 list view 만들기 (0) | 2021.08.04 |