티스토리 뷰

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
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
링크
TAG
more
«   2024/04   »
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
글 보관함