Сценарий:
MainActivity (назовем это мероприятие A) имеет 3 фрагмента и начинает действие B. Затем выполняется действие B, затем startActivityForResult (действие C).Проблема заключается в том, что при установке результата OK для действия C и вызове onBackPress вызывается startActivityForResult для действия B, но затем действие B закрывается через несколько секунд.
Действие A -> Действие B -> Действие C (для результата), Результат ОК, конец
Затем -> Операция B onActivityResult вызывается с Результатом ОК, но операция Б завершается и возвращается к ActivityA, который дважды перезагружается (я использовал Logcat и увидел, что onDestroy и onCreate вызывались дважды для обоихЗанятие B и Занятие A).
Найти следующее, но мне не очень помогло Действие закрыто после вызова onActivityResult
Попытался посмотреть на launchMode
Вот манифест:
<activity
android:name=".activities.ActivityA"
android:screenOrientation="portrait"
android:configChanges="orientation|keyboardHidden|screenSize"
android:theme="@style/AppTheme.NoActionBar"
android:windowSoftInputMode="stateHidden">
</activity>
<activity
android:name=".activities.ActivityB"
android:screenOrientation="portrait"
android:configChanges="orientation|keyboardHidden|screenSize"
android:theme="@style/AppTheme.NoActionBar.Profile">
</activity>
<activity
android:name=".activities.ActivityC"
android:screenOrientation="portrait"
android:configChanges="orientation|keyboardHidden|screenSize"
android:theme="@style/AppTheme.NoActionBar.Profile"
android:windowSoftInputMode="stateHidden|adjustPan">
</activity>
Вот запуски:
Занятие А в Занятие B:
intent = Intent(this@ActivityA, ActivityB::class.java)
intent.putExtra("user", user)
startActivity(intent)
Занятие В в Занятие C:
val intent = Intent(this@ActivityB, ActivityC::class.java)
intent.putExtra("user", user)
Результат настройки действия C в норме и окончание:
setResult(Activity.RESULT_OK)
finish()
Скриншот поведения: https://youtu.be/gMlH5iujoh0
Любая помощь приветствуется
изданиеэто: Деятельность B onActivityResult
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == REQUEST_CODE_EDIT_PROFILE && resultCode == Activity.RESULT_OK) {
Timber.e("REQUEST_CODE_EDIT_PROFILE OK AND RESULT OK")
HelperTools(applicationContext).toastStatus(
getString(R.string.your_profile_has_been_updated),
Toast.LENGTH_SHORT,
ToastType.SUCCESS
)
populateData(user)
}
}