片段 - 您是否必须在包含整个Activity的片段周围使用Activity Wrapper?

Gra*_*eme 20 android wrapper android-fragments android-activity

考虑来自developers.android.com的示例应用程序

这描述了像这样使用Fragments:

  • 在电话上,您可以在活动A上使用片段1,在活动B上使用片段2.
  • 在平板电脑上,你有更多的空间,所以你在活动A上使用片段1和片段2.

大!...但是......在第一个例子(带有电话的例子)中,您创建了一个活动,其中包含一个单独的xml文件,<fragment>而这只是setContentView()在您只在该xml上调用的活动中?这似乎是一个大量的冗余代码(活动,XML和片段显示片段):你可以设置一个Fragment作为Activity或不符合XML格式的包装总是需要?

Gra*_*eme 36

啊,在这里找到

public class MainMenuHolder extends FragmentActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        // If not already added to the Fragment manager add it. If you don't do this a new Fragment will be added every time this method is called (Such as on orientation change)
        if(savedInstanceState == null)
            getSupportFragmentManager().beginTransaction().add(android.R.id.content, new MainMenuFragment()).commit();
    }
}
Run Code Online (Sandbox Code Playgroud)

FragmentActivity允许您将Fragment设置为android.R.id.content我假设的内容是主干视图的android内部ID.

使用此方法,您最终仍然会进行大多数冗余活动(如果您想要的只是片段充当活动).但是,仍然有一个活动和一个XML文件充当容器的一半.

任何其他答案将不胜感激!

  • @shem - 我做同样的事情 - 我将Fragment规范名称作为Action传递,因此它可以从String中实例化. (2认同)