Android onActivityResult in fragment



我尝试在片段中获取结果。 片段中的代码

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 中的此类方法之后调用。如果您只想在活动上或仅在片段中处理结果 - 也许最好针对不同情况使用不同的结果代码(如果我正确理解您的问题(

相关内容

  • 没有找到相关文章

最新更新