StartActivity ForResultの使い方
3411 ワード
最初のActivityを2番目のActivityに開き、2番目のActivityが最初のActivityにデータを返す場合は、最初のActivityでpublic void onActivity Result(int requestCode,int resultCode,Intent data)メソッドを書き換える必要があります.手順の詳細1を使用して、最初のActivityでstartActivity ForResultメソッドを呼び出します.
2、2番目のActivityでsetResultメソッドで戻り値を設定します.
3、最初のActivityでonActivity Resultメソッドを書き換え、データはdataから取得できる.
メモ:requestCodeの役割startActivity ForResult(Intent intent,int requestCode)メソッドを使用して新しいActivityを開きます.startActivity ForResult()メソッドに要求コード(2番目のパラメータ)を入力する必要があります.要求コードの値は、業務の必要に応じて自己設定され、要求ソースを識別するために使用される.たとえば、1つのActivityには2つのボタンがあり、この2つのボタンをクリックすると同じActivityが開きます.そのボタンが新しいActivityを開いても、この新しいActivityがオフになると、前のActivityのonActivity Result(int requestCode,int resultCode,Intent data)メソッドが呼び出されます.onActivity Result()メソッドでは、新しいActivityがそのボタンで開いていることを知り、対応するビジネス処理を行う必要がある場合は、次のようにします.
resultCodeは1つのActivityに作用し、startActivity ForResult()メソッドを使用して複数の異なるActivityを開いて異なるビジネスを処理する場合があります.これらの新しいActivityがオフになると、前のActivityのonActivity Result(int requestCode,int resultCode,Intent data)メソッドが呼び出されます.返されたデータがどの新しいActivityから来たのかを知るには、onActivity Result()メソッドで次のようにします(SecondActivityとThirdActivityは、開く新しいActivityです):
// Activity
// ,
startActivityForResult(new Intent(FirstActivity.this, SecondActivity.class), 1);
2、2番目のActivityでsetResultメソッドで戻り値を設定します.
// Intent
Intent intent = new Intent();
// Intent
intent.putExtra("result", "My name is luis");
//
SecondActivity.this.setResult(RESULT_OK, intent);//RESULT_OK ,
// Activity
OtherActivity.this.finish();
3、最初のActivityでonActivity Resultメソッドを書き換え、データはdataから取得できる.
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
String result = data.getExtras().getString("result");// Activity
}
メモ:requestCodeの役割startActivity ForResult(Intent intent,int requestCode)メソッドを使用して新しいActivityを開きます.startActivity ForResult()メソッドに要求コード(2番目のパラメータ)を入力する必要があります.要求コードの値は、業務の必要に応じて自己設定され、要求ソースを識別するために使用される.たとえば、1つのActivityには2つのボタンがあり、この2つのボタンをクリックすると同じActivityが開きます.そのボタンが新しいActivityを開いても、この新しいActivityがオフになると、前のActivityのonActivity Result(int requestCode,int resultCode,Intent data)メソッドが呼び出されます.onActivity Result()メソッドでは、新しいActivityがそのボタンで開いていることを知り、対応するビジネス処理を行う必要がある場合は、次のようにします.
@Override public void onCreate(Bundle savedInstanceState) {
....
button1.setOnClickListener(new View.OnClickListener(){
public void onClick(View v) {
startActivityForResult (new Intent(FirstActivity.this, SecondActivity.class), 1);
}
});
button2.setOnClickListener(new View.OnClickListener(){
public void onClick(View v) {
startActivityForResult (new Intent(FirstActivity.this, SecondActivity.class), 2);
}
});
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch(requestCode){
case 1:
// 1 ,
case 2:
// 2 ,
}
}
}
resultCodeは1つのActivityに作用し、startActivity ForResult()メソッドを使用して複数の異なるActivityを開いて異なるビジネスを処理する場合があります.これらの新しいActivityがオフになると、前のActivityのonActivity Result(int requestCode,int resultCode,Intent data)メソッドが呼び出されます.返されたデータがどの新しいActivityから来たのかを知るには、onActivity Result()メソッドで次のようにします(SecondActivityとThirdActivityは、開く新しいActivityです):
public class SecondActivity extends Activity {
.....
SecondActivity.this.setResult(1, intent);
SecondActivity.this.finish();
}
public class ThirdActivity extends Activity {
......
ThirdActivity.this.setResult(2, intent);
ThirdActivity.this.finish();
}
public class FirstActivity extends Activity { // Activity SecondActivity ThirdActivity
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch(resultCode){
case 1:
// ResultActivity
case 2:
// NewActivity
}
}
}