728x90
세컨드 액티비티로 넘어갈때 인텐트로 값을 넘긴다.
<메인>
public class MainActivity extends AppCompatActivity {
TextView text2;
final int SECOND_ACTIVITY =1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text2 = findViewById(R.id.textView);
}
public void btnClicked(View view) //메인A -> 2A
{
Intent intent = new Intent(this, SecondActivity.class);
TestClass t1 = new TestClass();
t1.setData10(100);
t1.setData20("문자열1");
intent.putExtra("test1", t1);
//startActivity(intent);
startActivityForResult(intent,SECOND_ACTIVITY);
//다시 돌아왔을 때 onActivityResult 실행해서 SECOND_ACTIVITY 인지 확인후 값을 받는다.
}
@Override //다시 돌아왔을 때 이 함수가 실행돼 처리된다.
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == SECOND_ACTIVITY) { //요청
if (resultCode == RESULT_OK) {
TestClass t2 = data.getParcelableExtra("test2"); //세컨드 액티비티에서 보낸값
text2.setText(t2.getData10()+"\n");
text2.append(t2.getData20());
}
}
}
}
<세컨드 액티비티>
public class SecondActivity extends AppCompatActivity {
TextView text1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
text1=(TextView) findViewById(R.id.textView);
Intent intent = getIntent();
//Creator 메서드를 호출해 반환받는 메서드 호출
TestClass t1 = intent.getParcelableExtra("test1"); //이전 액티비티에서 넘긴 값이 key == test1
text1.setText("t1의 데이터 "+ t1.getData10()+"\n");
text1.append("t1스트링 "+ t1.getData20());
}
public void btnSAClicked(View view){ //세컨드에서 값을 보낼때
Intent intent = new Intent();
TestClass t2 = new TestClass();
t2.setData10(200);
t2.setData20("문자열2");
intent.putExtra("test2",t2);
setResult(RESULT_OK,intent);
finish();
}
}
엔티티클래스.java>
public class TestClass implements Parcelable // Parcelable
{
int data10;
String data20;
//새롭게 생성된 액티비티에서 이 객체를 추출해 낼때 호출 //중요
public static final Creator<TestClass> CREATOR = new Creator<TestClass>() {
@Override
public TestClass createFromParcel(Parcel in) {
TestClass t1 = new TestClass();
t1.setData10(in.readInt());
t1.setData20(in.readString());
return t1;
}
@Override
public TestClass[] newArray(int size) {
return new TestClass[size];
}
};
public int getData10() {
return data10;
}
public void setData10(int data10) {
this.data10 = data10;
}
public String getData20() {
return data20;
}
public void setData20(String data20) {
this.data20 = data20;
}
//객체를 intent에 담을때 자동으로 호출
//Parcel 객체에 객체복원을 위해 필요한 정보 담기, 멤버 변수 모두 저장,(중요)
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(data10);
dest.writeString(data20);
}
@Override
public int describeContents() {
return 0;
}
}
'Front-end > Android (안드로이드 앱 개발)' 카테고리의 다른 글
Android Studio , BroadCast Reciever 브로드캐스트 리시버 (0) | 2020.08.01 |
---|---|
Android Studio , URI (Intent)Activity Action / 공통 인텐트 / 구글 지도, 크롬, 다이얼, 전화걸기, 웹검색 (0) | 2020.07.30 |
Android Studio , Thread & Handler (쓰레드와 핸들러), 오래걸리는 작업, 쓰레드 이용하여 화면에 뿌릴 때 (0) | 2020.07.18 |
Android studio (안드로이드 스튜디오) 구글 API 설정하기, google api (0) | 2020.03.22 |
Android studio (안드로이드 스튜디오) Authrization 위험권한 부여하기 permission (0) | 2020.03.18 |
댓글