onActivityResult 在 DialogFragments 中被弃用,但在 Activity 中没有
onActivityResult is deprecated in DialogFragments but not in Activity
在 activity 中此方法仍然有效,但当我在 Dialog Fragments 中调用它时,它已被弃用。
在 DialogFragment 中
在Activity
编辑:我使用 Matisse 库加载图像,它喜欢
图书馆link:https://github.com/zhihu/Matisse
Matisse.from(getActivity())
.choose(MimeType.ofImage())
.countable(true)
.maxSelectable(9)
.addFilter(new GifSizeFilter(320, 320, 5 * Filter.K * Filter.K))
.restrictOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED)
.thumbnailScale(0.85f)
.imageEngine(new GlideEngine())
.showPreview(false) // Default is `true`
.forResult(REQUEST_CODE_AVATAR);
如何为这个库使用 ActivityResultLaucher?
向我解释为什么以及如何解决它?请
祝大家有个愉快的一天!
首先是结果 activity 已弃用。这是从 activity 获取结果的新方法。您应该能够对对话片段执行类似的操作。它被弃用的原因是当内存不足时,非活动活动通常会随结果一起删除,这会导致错误。
// You can do the assignment inside onAttach or onCreate, i.e, before the activity is displayed
ActivityResultLauncher<Intent> someActivityResultLauncher = registerForActivityResult(
new ActivityResultContracts.StartActivityForResult(),
new ActivityResultCallback<ActivityResult>() {
@Override
public void onActivityResult(ActivityResult result) {
if (result.getResultCode() == Activity.RESULT_OK) {
// There are no request codes
Intent data = result.getData();
doSomeOperations();
}
}
});
public void openSomeActivityForResult() {
Intent intent = new Intent(this, SomeActivity.class);
someActivityResultLauncher.launch(intent);
}
在 activity 中此方法仍然有效,但当我在 Dialog Fragments 中调用它时,它已被弃用。
在 DialogFragment 中
在Activity
编辑:我使用 Matisse 库加载图像,它喜欢
图书馆link:https://github.com/zhihu/Matisse
Matisse.from(getActivity())
.choose(MimeType.ofImage())
.countable(true)
.maxSelectable(9)
.addFilter(new GifSizeFilter(320, 320, 5 * Filter.K * Filter.K))
.restrictOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED)
.thumbnailScale(0.85f)
.imageEngine(new GlideEngine())
.showPreview(false) // Default is `true`
.forResult(REQUEST_CODE_AVATAR);
如何为这个库使用 ActivityResultLaucher?
向我解释为什么以及如何解决它?请
祝大家有个愉快的一天!
首先是结果 activity 已弃用。这是从 activity 获取结果的新方法。您应该能够对对话片段执行类似的操作。它被弃用的原因是当内存不足时,非活动活动通常会随结果一起删除,这会导致错误。
// You can do the assignment inside onAttach or onCreate, i.e, before the activity is displayed
ActivityResultLauncher<Intent> someActivityResultLauncher = registerForActivityResult(
new ActivityResultContracts.StartActivityForResult(),
new ActivityResultCallback<ActivityResult>() {
@Override
public void onActivityResult(ActivityResult result) {
if (result.getResultCode() == Activity.RESULT_OK) {
// There are no request codes
Intent data = result.getData();
doSomeOperations();
}
}
});
public void openSomeActivityForResult() {
Intent intent = new Intent(this, SomeActivity.class);
someActivityResultLauncher.launch(intent);
}