Java 未从片段调用onActivityResult
我有一个包含Java 未从片段调用onActivityResult,java,android,android-fragments,navigation,android-fragmentactivity,Java,Android,Android Fragments,Navigation,Android Fragmentactivity,我有一个包含BottomNavigationView和NavHostFragment的活动 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_activity); BottomNavigationView bottomNavigationView = findViewB
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
既不在父活动中调用,也不在片段中调用
我尝试了在中提供的各种解决方案但它们都没有工作将下面的代码块添加到父onActivityResult
for (Fragment fragment : getSupportFragmentManager().getFragments()) {
//send result to all child fragment
if(fragment!=this)
fragment.onActivityResult(requestCode, resultCode, data);
}
不太确定,但是否该片段正在调用该意图?请尝试在单击imageView或按钮时启用侦听器,然后截取它并从父活动调用意图?您不能将
intent.createChooser()
与intent.GET\u CONTENT
一起使用-这对活动和片段都适用
相反,只需将您的意图直接用于
startActivityForResult
您的RC\u PHOTO\u PICKER
值多少?this.startActivityForResult
中的this
是您的片段吗?@ianhanniballakeRC\u PHOTO\u PICKER
的值是2,定义为常量,此
指片段您可以在AndroidManifest.xml中为您的活动包含条目吗?里面没有任何内容:
您是否使用了任何你的舱单上还有其他活动吗?特别是那些在清单条目中使用了android:launchMode
的人?我在父活动中也使用了Toast
,它没有被调用。我从udacity课程中获得了这段代码:Firebase在一个周末
:。让我试试你的建议。还是不能解决这个问题。甚至没有在父活动中调用:(其他活动是否开始?onCreate
仅在包含navHostFragment
的父活动中调用。否,我的意思是在调用startActivityForResult
后,GET\u CONTENT
活动是否会出现在屏幕上?