Android startActivity ForResult 실례 상세 설명

Android startActivity ForResult 실례 상세 설명
startActivity ForResult 는 두 activity 간 의 데이터 전달 에 사용 되 며,Activity 1 은 Activity 2 에 값 을 전달 하고,Activity 2 는 Activity 1 에 값 을 되 돌려 줍 니 다.
첫 번 째 단계:Activity 1 중:startActivity ForResult(Intent intent,Int requestCode)

Intent intent = new Intent();
intent.setClass(Activity1.this,Activity2.class);
Bundle bundle = new Bundle();
intent.putExtras(bundle);
bundle.putString("abc", "bbb");
startActivityForResult(intent, 0);
//         ,0     (     ,    >=0)
두 번 째 단계:Activity 2 에서 setResult(int resultCode,Intent intent)가 데 이 터 를 전송 할 때 setResult 방법 을 사용 하고 그 다음 에 Activity 2 에서 finish 방법 을 호출 합 니 다.

Intent intent = this.getIntent();
Bundle bundle = intent.getExtras();
String bbb=bundle.getString("abc");//  A   

bundle.putString("aaa", "back");//   A   
intent.putExtras(bundle);
this.setResult(Activity.RESULT_OK, intent);
//1、               0,
//  B               ,
//             。       RESULT_OK  ,           。
//      ESULT_CANCELED, RESULT_OK, or any custom values starting at RESULT_FIRST_USER。
//  ,   child activity  ,  parent activity          RESULT_CANCELED.
//2、intent A     Bundle intent,           Bundle intent
this.finish();
//Activity2  finish()           Activity1

세 번 째 단계:Activity 1 에서:데 이 터 를 되 돌려 주 고 onActivity Result(int requestCode,int resultCode,Intent intent)를 다시 씁 니 다.

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
 super.onActivityResult(requestCode, resultCode, data);
 if (requestCode == 0 && resultCode == Activity.RESULT_OK) {
  Bundle bundle = data.getExtras();
  gameView.backString = bundle.getString("aaa");
  Toast.makeText(this, backString, Toast.LENGTH_SHORT).show();
 }
}

읽 어 주 셔 서 감사합니다. 여러분 에 게 도움 이 되 기 를 바 랍 니 다.본 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기