0

我有一个应用程序,其中一部分是相机拍摄照片的片段,当拍摄照片时,会加载另一个片段以显示图像。然后,如果不满意,用户可以选择重新拍摄照片。这应该回到上一个片段(相机),它会在显示叠加层时进行,但是仍然显示之前拍摄的图像。

编辑* * 我通过它进行了调试,当拍摄图像并加载下一个片段时,不会调用 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;

}

以前的

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() 有任何见解,我将不胜感激......

编辑仍然显示的图像预览是标准相机图像预览的图像预览,而不是来自用于预览的片段

4

2 回答 2

5

当您hide() show()分片时,您不会接到onResume(). 然后你只会在第一次创建片段时接到电话。

于 2013-08-08T11:21:22.283 回答
1

onResume() 方法总是在片段运行之前被调用。检查生命周期图 --> http://docs.xamarin.com/static/guides/android/platform_features/fragments/part_1_-_creating_a_fragment/Images/fragment_lifecycle.png

于 2013-08-08T09:03:29.347 回答