티스토리 뷰
android activity data sharing intent
Activity간 데이터를 전달(공유)하려면 intent를 사용해야 한다.
# 다음 Activity로 데이터를 전달 할 때
현재 Activity(A)에서 새로운 Activity(B)를 실행시킬 때
intent에 data를 put해서 새로운 Activity(B)로 전달하고
새로운 Activity(B)에서 데이터를 받는다.
Intent intent = new Intent(AlphaActivity.this, BravoActivity.class);
intent.putExtra("key","value");
startActivity(intent);
[A Activity에서 intent에 key, value형식으로 데이터를 저장하고 B Activity로 전달한다.]
Intent intent = getIntent();
String stringData = intent.getStringExtra("key");
[A Activity에서 전달받은 data를 데이터 형식에 맞게 받아준다. ]
# 현재 Activity에서 이전 Activity로 데이터를 전달 할 때
현재 Activity에서 이전 Activity로 데이터를 전달하려면
이전 Activity(A)에서 다음 Activity(B)를 실행시킬 때 startActivity() 함수가 아닌
startActivityForResult() 함수로 실행 시켜야
이전 Activity(A)에서 onActivityResult를 오버라이딩 하여 데이터를 받아 올 수 있다.
public class AlphaActivity extends AppCompatActivity {
private final int REQUEST_CODE_ALPHA = 100;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_alpha);
Intent intent = new Intent(AlphaActivity.this, BravoActivity.class);
intent.putExtra("key", "value");
startActivityForResult(intent, REQUEST_CODE_ALPHA);
}
}
[위의 예제와 마찬가지로 A Activity에서 intent에 데이터를 저장하고
startActivityForResult()로 B Activity를 실행시킨다.]
public class BravoActivity extends AppCompatActivity {
String stringData;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_bravo);
Intent intent = getIntent();
stringData = intent.getStringExtra("key");
resultData();
}
private void resultData() {
Intent intent = new Intent();
intent.putExtra("key", stringData);
setResult(RESULT_OK, intent);
finish();
}
}
[마찬가지로 A Activity에서 전달 한 데이터를 받을 수 있고
B Activity에서 intent에 데이터를 저장 한 뒤 setResult()를 통해
startActivityForResult로 자신을 실행시킨 Activity로 데이터를 전달 할 수 있다.]
public class AlphaActivity extends AppCompatActivity {
private final int REQUEST_CODE_BRAVO = 100;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_alpha);
Intent intent = new Intent(AlphaActivity.this, BravoActivity.class);
intent.putExtra("key", "value");
startActivityForResult(intent, REQUEST_CODE_BRAVO);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode != RESULT_OK)
return;
if (requestCode == REQUEST_CODE_BRAVO) {
String result = data.getStringExtra("key");
Log.d("TEST", result);
}
}
}
[B Activity에서 setResult()로 전달 한 데이터를 A Activity에서
onActivityResult함수를 오버라이딩해서 받는다.]
'Android' 카테고리의 다른 글
Android statusbar 색상바꾸기 (0) | 2016.07.19 |
---|---|
Android spannable (textview) (0) | 2016.07.19 |
안드로이드 TextView Html (0) | 2016.07.13 |
Android fragmentManager getFragment (1) | 2016.06.22 |
Android out of memory error [Glide] (0) | 2016.04.06 |