我尝试在片段中获取结果。 片段中的代码
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (resultCode != Activity.RESULT_OK) return
val bundle = data?.extras
when (requestCode) {
LicenseActivationActivity.REQUEST_RESULT_COUNT_ENTERPRISE ->
//
}
}
调用此代码。但也在抽屉活动中的结果
是否仅在片段中调用 onActivityResult ?
更新
抽屉活动中的此代码
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (resultCode == Activity.RESULT_OK) {
WayBillsActivity.start(this)
finish()
}
}
出于某种原因,它也感到满意,但仅在 onActivityResult 片段之后。
在您的活动中调用此
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
for (Fragment fragment : getSupportFragmentManager().getFragments()) {
fragment.onActivityResult(requestCode, resultCode, data);
}
}
然后调用片段
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
//super.onActivityResult(requestCode, resultCode, data); comment this unless you
}
在抽屉活动中添加代码
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
fragment.super.onActivityResult(requestCode, resultCode, data)
}
**fragment.super.onActivityResult(requestCode, resultCode, data)**
那么你onActivityResult
的片段方法称为
代码中的一切似乎都很好。您是否使用调试器进行了检查,因为我在我的片段中实现了相同的内容并且它工作正常
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
switch (requestCode) {
case REQ_CODE_EDIT_PROFILE:
userModel = data.getExtras().getParcelable(UserModel.class.getSimpleName());
setData();
break;
}
}
}
onActivityResult in fragment 仅在 Activity 中的此类方法之后调用。如果您只想在活动上或仅在片段中处理结果 - 也许最好针对不同情况使用不同的结果代码(如果我正确理解您的问题(