【发布时间】:2019-07-25 08:54:54
【问题描述】:
场景:
MainActivity(我们称之为活动A)有3个片段并启动活动B。活动B然后是startActivityForResult(活动C)。问题是当在活动 C 上设置结果 OK 并调用 onBackPress 时,在活动 B 上调用 startActivityForResult 但活动 B 在几秒钟后关闭。
活动A -> 活动B -> 活动C(用于结果),结果OK,完成
然后 -> Activity B onActivityResult 被调用,结果 OK,但 Activity B 完成并返回到 ActivityA,它重新加载了两次(我使用 Logcat 并看到 onDestroy 和 onCreate 被调用了两次 Activity B 和 Activity A)。
找到以下但对我帮助不大的Activity is closed after onActivityResult is called
尝试查看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>
这是发布:
活动 A 到活动 B:
intent = Intent(this@ActivityA, ActivityB::class.java)
intent.putExtra("user", user)
startActivity(intent)
活动 B 到活动 C:
val intent = Intent(this@ActivityB, ActivityC::class.java)
intent.putExtra("user", user)
Activity C设置结果OK并完成:
setResult(Activity.RESULT_OK)
finish()
行为截图:https://youtu.be/gMlH5iujoh0
任何帮助表示赞赏
编辑:Activity 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)
}
}
【问题讨论】:
-
你能把你的活动 B onActivityResult 逻辑贴在这里吗,
-
什么是
user你能提供这个类的来源吗?如果它是可打包/可序列化的,你能确定它是否正确解析吗? -
@DhavalSolanki 我用 Activity B onActivityResult 编辑了帖子,Radekj 用户是一个 Parcelable 类,并在正确填充数据时正确解析