- Pierwsza aktywność rozpoczyna działalność sekund z startActivityForResult
- drugie działanie zaczyna trzeci aktywność z startActivityForResult
Oczekiwany wynik: trzecia (ostatnia) Aktywność wyznacza wynik, który jest złowionych na sekunda aktywność użytkownika onActivityResult
Obecny wynik: trzecia (ostatnia) Aktywność wyznacza wynik, który jest pozyskanych na pierwszy aktywności za onActivityResult
Jak mogę ustawić wynik na trzecim aktywności, które zostaną złowione na drugim aktywność trzeci (ostatni) Aktywność wyznacza wynik, który jest przyłapany na działaniu onActivityResult drugiej akcji?
Niektóre fragmenty kodu:
pierwszą czynnością
public class TestProjActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.main);
Log.i("TAAAG", "1st activity - startActivityForResult");
Intent intent = new Intent(TestProjActivity.this, Activ2.class);
intent.setFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
startActivityForResult(intent, 1008);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.i("TAAAG", "1st activity - onActivityResult");
if (resultCode == RESULT_OK) {
Log.i("TAAAG", String.valueOf(requestCode));
switch (requestCode) {
case 1008:
String info = data.getExtras().getString("KEY1");
Log.i("TAAAG", "1st activity - onActivityResult - printing result");
Log.i("TAAAG", info);
break;
}
}
}
}
drugie aktywność
public class Activ2 extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.i("TAAAG", "2nd activity - startActivityForResult");
Intent intent = new Intent(Activ2.this, Activ3.class);
startActivityForResult(intent, 1009);
Intent intent2 = new Intent();
intent2.putExtra("KEY1", "VALUE1");
setResult(RESULT_OK, intent2);
finish();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.i("TAAAG", "2nd activity - onActivityResult");
if (resultCode == RESULT_OK) {
Log.i("TAAAG", String.valueOf(requestCode));
switch (requestCode) {
case 1009:
String info = data.getExtras().getString("KEY2");
Log.i("TAAAG", "2nd activity - onActivityResult - printing result");
Log.i("TAAAG", info);
break;
}
}
}
}
aktywność trzecie
public class Activ3 extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.i("TAAAG", "3rd activity - Inserting Value and finishing");
Intent intent = new Intent();
intent.putExtra("KEY2", "VALUE2");
setResult(RESULT_OK, intent);
finish();
}
}
Kończysz drugą aktywność j ust po uruchomieniu trzeciego. Z tego, co wiem, pierwsze działanie otrzyma wynik, ponieważ drugi już nie działa. Spróbuj usunąć wykończenie(); od razu utwórz w Activty2 i zobacz, co się stanie! –
Tak, dziękuję - rozwiązało problem! – Chaiavi