他のActivityを起動し、結果を返します.
1393 ワード
例えばFirstActivityは、SecondActivityが返す結果を必要とし、それらの間の通信は
requestCode,resultCode,intentが実現します.
FirstActivityがSecondActivityを起動すると、要求コードと意図が送信されます.
SecondActivityは、このインタフェースを起動する意図を取得し、戻るデータをこの意図にパッケージします.
また、結果コードも設定されます.
にある
FirstActivityでonActivity Result()メソッドを書き換えます.
要求コードと結果コードを設定するのは、複数のインタフェースがインタラクションを行う可能性があるためであるが、要求コードと結果コードが同時に決定されると、どの2つの場所がインタラクションを行うのかを決定することができる.
1つのActivity(この例のFirstActivity)は、startActivity ForResult()を呼び出して異なるActivityを開くことが多い場合、異なる要求コード(>=0)を設定し、これらの新しいActivity(この例のSecondActivity)が閉じた後に結果を返すと、システムは前のActivityのonActivity Result()メソッドを呼び出し、要求コードと結果コードを同時に検証することで、異なる結果を取得します.
requestCode,resultCode,intentが実現します.
FirstActivityがSecondActivityを起動すると、要求コードと意図が送信されます.
Intent intent = new Intent(FirstActivity.this
,SecondActivity.class);
startActivityForResult(intent,0); //requestCode = 0;
SecondActivityは、このインタフェースを起動する意図を取得し、戻るデータをこの意図にパッケージします.
また、結果コードも設定されます.
Intent intent = getIntent();
// intent
Bundle data = new Bundle();
data.putString("name",String); //
intent.putExtras(data);
// intent
SecondActivity.this.setResult(0,intent); //resultCode = 0;
// Activity
SecondActivity.this.finish();
にある
FirstActivityでonActivity Result()メソッドを書き換えます.
@Override
public void onActivityResult(int requestCode , int resultCode , Intent intent){
if(requestCode == 0 && resultCode == 0){
// intent Bundle
Bundle data = intent.getExtras();
// Bundle
String result = data.getString("name");
}
}
要求コードと結果コードを設定するのは、複数のインタフェースがインタラクションを行う可能性があるためであるが、要求コードと結果コードが同時に決定されると、どの2つの場所がインタラクションを行うのかを決定することができる.
1つのActivity(この例のFirstActivity)は、startActivity ForResult()を呼び出して異なるActivityを開くことが多い場合、異なる要求コード(>=0)を設定し、これらの新しいActivity(この例のSecondActivity)が閉じた後に結果を返すと、システムは前のActivityのonActivity Result()メソッドを呼び出し、要求コードと結果コードを同時に検証することで、異なる結果を取得します.