创build和使用片段的视图,但不可见的用户

原因

我需要这样做,因为我想获得片段视图的可绘制caching,然后从该视图创build一个位图。 这个位图将被用来在Facebook上发布。

问题

当我创build我的Fragment的时候,视图并没有被创build,因为它们没有通过Fragment Transaction添加,而且它们包含的视图对用户是不可见的。

我也不想手动绘制这些视图,因为我不会得到一个确切的复制品的屏幕。

我的问题

有没有一种方法可以使Fragment具有完整的function(与通过FragmentTransaction添加function相同),而不会显示片段?

我需要能够访问片段的视图,当它不可见。

提前致谢

Solutions Collecting From Web of "创build和使用片段的视图,但不可见的用户"

另一个问题是如何将活动渲染到屏幕外的缓冲区 。 您可以使用这种技术将片段渲染到屏幕外的缓冲区中。

该技术涉及:

  • 使用startActivityForResult()而不是startActivity()启动新的活动
  • 设置绘图caching
  • 一旦布局完成,使用getDrawingBitmap()

我在这里给出的答案也适用于你的情况吗? 基本上它使用了不同的FragmentTransaction方法。

有没有什么办法可以将你的碎片添加到隐藏的布局? XML示例:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/GoneFragmentContainer" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:visibility="gone" /> 

然后在你的代码中:

 MyFragment myFragment = new MyFragment(); getSupportFragmentManager().beginTransaction() .add(R.id.GoneFragmentContainer, myFragment) .commit(); myFragment.getView().callMethodsOnMyNonVisibleFragment(); 

我会尽量避免从View抓取Bitmap ,而是以其他方式获取它。 然后,您可以在片段的onAttach()方法中执行所需的任何处理,当您在其父活动中实例化片段时会调用片段,并在片段可见之前执行该操作。