У меня есть 2 мероприятия, каждый в отдельных приложениях. Activity1 имеет кнопку, пользователь может нажать и он вызывает вторую деятельность, используя намерение в onClick()
метод:Android onActivityResult называется ранним
Intent myIntent = getPackageManager().getLaunchIntentForPackage(com.myProject.Activity2);
startActivityForResult(myIntent, 600);
Это правильно запускает деятельности2 из Activity1, но onActivityResult
вызывается в Activity1 перед тем onCreate
вызывается в деятельности2, вместо в onBackPressed()
, где я установил намерение возвращения.
Вот onCreate
метод деятельности2:
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
Вот текущая версия onBackPressed
метода деятельности2:
@Override
public void onBackPressed() {
Intent intent = new Intent();
intent.putExtra("Stuff", someStuff);
if(getParent()==null){
setResult(Activity.RESULT_OK, intent);
}else{
getParent().setResult(Activity.RESULT_OK, intent);
}
finish();
super.onBackPressed();
}
Мой AndroidManifest.xml имеет следующий фильтр намерений для деятельности2:
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
Я подтвердил, что мой launchMode
- standard
(а не singleTask
и т. Д.), Как рекомендовано here, а мой код запроса не является отрицательным, как указано here. Я также пробовал android:launchMode="singleTop"
, но это тоже не было.
Я также попытался не называя finish()
в onBackPressed()
для деятельности2 как упомянуто here (также только с super.onBackPressed()
, как было предложено here) и снова называть его, как предложил here.
Кроме того, я попытался прокомментировать линию intent.putExtra("Stuff", someStuff);
, так как это вызвало ошибку для this person.
Любые идеи относительно того, что я могу делать неправильно?
Благодарим вас за то, что вы вернулись и разместили свое решение. Я давно застрял в этой проблеме, и я тоже пробовал все решения, с которыми вы столкнулись в вашем вопросе, безрезультатно. Это зафиксировало это и сделало мой день намного лучше =) –
Я использую startActivityForResult БЕЗ setClassName или полностью квалифицированные имена по всем моим проектам, и все они отлично работают, за исключением одного случая. Поэтому я попробовал ваше решение в этом случае, и это не имело никакого значения. – user316117
2 часа !! Спасибо вам за то, что вы нашли решение. – Anthone