Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Camera 姜饼上的Android ViewPager和相机预览问题_Camera_Android Viewpager_Android 2.3 Gingerbread - Fatal编程技术网

Camera 姜饼上的Android ViewPager和相机预览问题

Camera 姜饼上的Android ViewPager和相机预览问题,camera,android-viewpager,android-2.3-gingerbread,Camera,Android Viewpager,Android 2.3 Gingerbread,我对viewPager和摄像头应用程序进行了广泛的文档研究,事实上,除了姜饼上的一个主要问题,我在S.O.上没有发现任何问题。所以我会尝试问这个问题 在我的应用程序中,有一个ViewPager(支持库v4),它显示两个片段: 一个,将其称为主片段,该片段显示活动开始时向用户显示的某些信息,包括最初为空且隐藏的imageview 通过键入下一个片段,用户可以看到在创建活动时创建的摄影机预览(即使直到键入时才显示)和拍照按钮 拍摄照片时,视图将以编程方式带回主片段,即 imageview将加载新照片

我对viewPager和摄像头应用程序进行了广泛的文档研究,事实上,除了姜饼上的一个主要问题,我在S.O.上没有发现任何问题。所以我会尝试问这个问题

在我的应用程序中,有一个ViewPager(支持库v4),它显示两个片段: 一个,将其称为主片段,该片段显示活动开始时向用户显示的某些信息,包括最初为空且隐藏的imageview

通过键入下一个片段,用户可以看到在创建活动时创建的摄影机预览(即使直到键入时才显示)和拍照按钮

拍摄照片时,视图将以编程方式带回主片段,即 imageview将加载新照片并取消隐藏,以便用户可以看到与其他先前存在的信息混合的图像

如果用户不喜欢这张照片,他可以重新键入相机片段并拍摄另一张,直到对结果满意为止

因此,在返回到主片段之前,我调用mCamera.restartPreview()并确保在用户重新键入时相机已准备就绪

Android 4.x上的一切都很顺利,但当我在2.3.3(API级别10)上测试这一点时,当调用主片段时,相机预览仍保持在前景中,并隐藏视图。您可以在屏幕的camerafragment显示按钮的部分中看到视图的其余部分,甚至可以滚动视图的其余部分,但其余部分与相机预览重叠

以下是相关功能的代码:

CameraFragment on PictureTaken()

以及main fragment takeBack()方法


有人知道这是ViewPager和姜饼的问题还是CameraPreview和姜饼的问题还是什么吗?

我自己找到了答案,我将在这里发布,以防对其他人有用

显然,问题是由setCurrentItem方法的smoothscroll选项引起的。 这个问题通过更改

mViewPager.setCurrentItem(0, true);

public void takeBack(){
    mViewPager.setCurrentItem(0, true);
    String mainFragTag = "android:switcher:"+R.id.newpinpager+":0";
    Fragment fragMain = this.getSupportFragmentManager().findFragmentByTag(mainFragTag);

    try {
        ((NewPinMainFragment)fragMain).showPhoto(newPin.getMedia());
    } catch (NullPointerException e){
    }
}
mViewPager.setCurrentItem(0, true);
mViewPager.setCurrentItem(0, false);