Упражнение 1
Создайте переменную класса для справки.
private final int REQUEST_CODE = 0;
...
//Somewhere in your code you have to call startActivityForResult
Intent intent = new Intent(Activity1.this, Activity2.class);
startActivityForResult(intent);
Занятие 2
Перед завершением Activity2 вы должны установить для результата значение OK и поместить данные, которые вы хотите вернуть, в Activity1, например.
Intent data = new Intent();
data.putExtra("name", "Mark");
data.putExtra("number", 1);
data.putExtra("areYouHappy", true);
setResult(RESULT_OK, data);
finish(); //closes Activity2 and goes back to Activity1
Теперь вернитесь к Activity1, вы должны переопределить метод onActivityResult и ПОЛУЧИТЬ значения из Activity2.
Вы делаете это, сначала проверяя, в порядке ли результат Activity2, а затем проверяя ссылку REQUEST_CODE, которую вы передали. Так как ранее мы создали private final int REQUEST_CODE = 0
, то мы проверяем, равен ли requestCode переменной REQUEST_CODE. Если это так, извлеките данные из действия 2.
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(resultCode==RESULT_OK) {
if(requestCode==REQUEST_CODE) {
if(data.getExtras()!=null) {
String name = data.getStringExtra("name");
int number = data.getIntExtra("number",0); //2nd parameter is the default value in case "number" does not exist
boolean areYouHappy = data.getBooleanExtra("areYouHappy", false); //2nd parameter is the default value in case "areYouHappy" does not exist
}
}
}
}
person
Mark Pazon
schedule
11.04.2012
ActivityGroup
, он устарел, лучше используйтеFragment
. - person Lalit Poptani   schedule 11.04.2012