我有一个包含BottomNavigationView
和NavHostFragment
的活动。
@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);
}
确定,但可能是片段正在调用意图吗? 您能否尝试在单击图像视图或按钮时使用侦听器,然后拦截它并从父活动中调用意图?