onActivityResult 不是从片段调用的



我有一个包含BottomNavigationViewNavHostFragment的活动。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_activity);
    BottomNavigationView bottomNavigationView = findViewById(R.id.bottom_navigation);
    bottomNavigationView.setSelectedItemId(R.id.navigation_profile);
    NavController navController = Navigation.findNavController(this, R.id.myNavHostFragment);
    NavigationUI.setupWithNavController(bottomNavigationView, navController); 

我还在此父活动中添加了onActivityResult方法。

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    Toast.makeText(this,"Parent onActivity",Toast.LENGTH_SHORT).show();
    for (Fragment fragment : getSupportFragmentManager().getFragments()) {
        fragment.onActivityResult(requestCode, resultCode, data);
    }
}

在片段中,我有一个ImageView,其中我正在使用 Intent 从用户那里挑选图像。

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/jpeg");
intent.putExtra(Intent.EXTRA_LOCAL_ONLY, true);
this.startActivityForResult(Intent.createChooser(intent, "Complete action using"), RC_PHOTO_PICKER);

在片段的onActivityResult中,我正在这样做:

@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    Toast.makeText(getActivity(),"OnActivityResult",Toast.LENGTH_SHORT).show();
    // Result returned from launching the Intent to select image for profile
    if (requestCode == RC_PHOTO_PICKER && resultCode == Activity.RESULT_OK) {
        Toast.makeText(getActivity(),"Called",Toast.LENGTH_SHORT).show();
    }
}

问题是onActivityResult既未在父活动中调用,也不在片段中调用。

我已经尝试了答案1,答案2,答案3中提供的各种解决方案。但是他们都没有工作!!

不能将Intent.createChooser()Intent.GET_CONTENT一起使用 - 对于活动和片段都是如此。

相反,只需直接将您的意图与startActivityForResult一起使用即可。

将下面的代码块添加到父项 onActivityResult

for (Fragment fragment : getSupportFragmentManager().getFragments()) {
   //send result to all child fragment
       if(fragment!=this)
        fragment.onActivityResult(requestCode, resultCode, data);
    }
不太

确定,但可能是片段正在调用意图吗? 您能否尝试在单击图像视图或按钮时使用侦听器,然后拦截它并从父活动中调用意图?

相关内容

  • 没有找到相关文章

最新更新