안녕하세요!! @wonnieyoon입니다.
오늘 지난번 포스팅은 Parcelable을 이용하여 객체로 만들어 값을 전달하는 방법에 대해 포스팅했었는데요.
오늘은 화면전달에 있어 startActivity(intent); 가 아닌 startActivityForResult(intent,request code) 방법에 대해 포스팅하겠습니다.
왜 startActivityForResult를 사용하냐?
단순히 startActivity(intent)를 사용하면
화면을 단순히 전달하는 기능밖에 할수 없지만
startActivityForResult 하면 전달한 activity에서 requestcode와 resultcode를 통해 다양하게 이벤트를 처리할수 있기 때문에 유용한 방법입니다.
코드
<MainActivity.java>
public class MainActivity extends AppCompatActivity {
private Button b1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b1 = (Button)findViewById(R.id.button1);
//스팀 버튼 눌렀을때
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this,Main2Activity.class);
startActivityForResult(intent,1);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 1)
{
int a = data.getIntExtra("price",100);
Toast.makeText(MainActivity.this,"스팀"+a,Toast.LENGTH_SHORT).show();
}
}
}
<Main2Activity.java>
public class Main2Activity extends AppCompatActivity {
private Button b3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
b3 = (Button)findViewById(R.id.button3);
b3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent steem = new Intent();
steem.putExtra("price",10000);
setResult(2,steem);
finish();
}
});
}
}
결과
<시작화면>
<스팀버튼 눌렀을때>
<값 전달 버튼 눌렀을때>