[안드로이드] 화면전달 onstartActivityForResult를 사용해보자.

Words
160
Reading
1 min
Listen
Play
9y

안녕하세요!! wonnieyoon@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();

        }
    });

}

}

결과


<시작화면>


<스팀버튼 눌렀을때>


<값 전달 버튼 눌렀을때>

[안드로이드] 화면전달 onstartActivityForResult를 사용해보자. | Ecency