他のActivityを起動し、結果を返します.

1393 ワード

例えばFirstActivityは、SecondActivityが返す結果を必要とし、それらの間の通信は
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()メソッドを呼び出し、要求コードと結果コードを同時に検証することで、異なる結果を取得します.