【发布时间】:2019-12-05 08:47:44
【问题描述】:
我有一个包含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 既没有在父活动中调用,也没有在片段中调用。
【问题讨论】:
-
RC_PHOTO_PICKER的值是多少?this中的this.startActivityForResult是你的 Fragment 吗? -
RC_PHOTO_PICKER的@ianhanniballake 值为 2,定义为常量,this指的是片段 -
您能否在 AndroidManifest.xml 中为您的活动包含该条目?
-
里面什么都没有:
<activity android:name=".FirstScreen" /> -
您是否在清单中使用任何其他活动?特别是在清单条目中使用
android:launchMode的任何人?
标签: java android android-fragments navigation android-fragmentactivity