我有一个应用程序,其中一部分是相机拍摄照片的片段,当拍摄照片时,另一个片段被加载以显示图像。然后,如果不满意,用户可以选择重新拍摄照片。这应该返回到上一个片段(相机),它会在显示叠加层时显示,但之前拍摄的图像仍会显示。
编辑*的 * 我通过它进行调试,当拍摄图像并加载下一个片段时,不会调用onpause(),因此,当用户单击“重拍”时,不会调用onresume来重新安装我的相机。我知道这里有类似的问题,但我似乎无法找到问题的答案。* *编辑
应该说我正在与其他人合作,这会造成混乱。以下是转到下一个片段并转到上一个片段的两种方法
下一步
public void gotoNextFragment(String nextTag, Fragment nextFragment){
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.setCustomAnimations(R.animator.enter_slide_in, R.animator.enter_slide_out);
boolean newlyCreated = false;
if(nextFragment == null){
nextFragment = Fragment.instantiate(this, nextTag);
newlyCreated = true;
}
//hide current fragment
ft.hide(fm.findFragmentByTag(Misc.currentContentFragmentTag));
if(newlyCreated){
ft.add(R.id.content_frame, nextFragment, nextTag);
}
else{
ft.show(nextFragment);
}
ft.addToBackStack(null);
ft.commit();
Misc.currentContentFragmentTag = nextTag;
}
PREVIOUS
public void gobackToPreviousFragment(String preFragmentTag,Fragment f){
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.setCustomAnimations(R.animator.close_slide_in,R.animator.close_slide_out);
ft.show(f);
ft.remove(fm.findFragmentByTag(Misc.currentContentFragmentTag));
ft.addToBackStack(null);
ft.commit();
Misc.currentContentFragmentTag = preFragmentTag;
}
如果有人想知道我需要做些什么来确保调用onResume()我会很感激...
修改 仍然显示的图像预览是标准摄像机图像预览的图像预览,而不是用于预览的片段
答案 0 :(得分:5)
当您hide()
show()
分段时,您无法接听onResume()
。然后,您只在第一次创建片段时才接到电话。
答案 1 :(得分:1)
onResume() - 方法总是在片段运行之前调用。检查生命周期图 - > http://docs.xamarin.com/static/guides/android/platform_features/fragments/part_1_-_creating_a_fragment/Images/fragment_lifecycle.png