gpt4 book ai didi

android - 如何取消 FragmentTransaction 提交

转载 作者:行者123 更新时间:2023-11-29 20:19:45 25 4
gpt4 key购买 nike

我必须为用户提供在我的应用中捕获视频的选项,但我不希望在视频未录制时显示预览(或占用空间)。

因此,我基于 camera2video 使用 FragmentTransaction 构建了一个 float 预览谷歌示例。

我的类变量是:

FragmentTransaction fm = null;
Camera2VideoFragment camera2VideoFragment;

然后我创建一个实例并在 OnCreate 方法中初始化相机:

camera2VideoFragment = Camera2VideoFragment.newInstance();
if (null == savedInstanceState) {
fm = getFragmentManager().beginTransaction()
.replace(R.id.container, camera2VideoFragment);
}

我想使用菜单方法 (onOptionsItemSelected) 显示和隐藏预览( fragment ):

case R.id.action_captureScreen:
item.setChecked(!item.isChecked());
if (item.isChecked())
{
fm.commit(); // show the preview - working
// camera2VideoFragment.captureVideo(); // start capture video
}
else
{
//camera2VideoFragment.captureVideo(); // stop the video and save to file
fm.detach(camera2VideoFragment); // hide the preview - NOT WORKING
}

我也试过 fm.hide(camera2VideoFragment) 但还是不行。

那么,问题是如何隐藏\显示预览?谢谢!

最佳答案

您混淆了一些术语。事务仅在您提交后由 fragment 系统“执行”。在调用 commit() 之前没有任何反应。

所以你确实执行了两个不同的事务,一个用于显示,另一个用于隐藏。

显示:

getFragmentManager().beginTransaction().show(camera2VideoFragment).commit();

隐藏:

getFragmentManager().beginTransaction().hide(camera2VideoFragment).commit();

关于android - 如何取消 FragmentTransaction 提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33391042/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com