Android Studio中的fragment_main和activity_main布局

时间:2014-01-16 05:40:41

标签: android android-layout android-studio

我对Android Studio生成的两个布局文件感到困惑。 (fragment_main.xml和activity_main.xml)

我使用activity_main.xml。要使用activity_main.xml,我需要注释掉

if(savedInstanceState==null){...} //in onCreate(), Otherwise it will not display

然后我可以使用activity_main.xml。

有人能解释我吗

  1. 何时使用Fragment_main.xml

  2. 使用两种布局的优势。

  3. 如何正确使用它们。(如果我没有在上面注释掉它将不显示activity_main.xml,而是显示fragment_main布局。这意味着我需要在fragment_main.xml中创建接口。)

  4. 感谢。

3 个答案:

答案 0 :(得分:6)

以下是使用Fragments(分割您的活动)的好处:

  1. 支持多种模式:例如,如果您的应用支持横向和纵向模式或平板电脑设备。考虑像你有一个列表视图,另一个是你的应用程序中的详细信息页面。您可以使用列表视图制作两个片段,使用详细信息制作一个片段而不是两个活动,并且可以在横向和平板电脑设备中组合在一起,而不是为平板电脑制作另一个活动在平板电脑上查看Android Settings屏幕。

  2. 自定义视图:在某些情况下,我们需要创建一些自定义视图,但自定义视图的问题是维护状态,因此如果它们符合您的需求,您可以使用片段

  3. 应用导航:滑动抽屉导航处理。在您的设备中打开Goog​​le Play,查看滑动导航。如果您点击滑动导航栏中的任何可用选项,则在点击项目时您将看不到任何活动。由于它们都是应用程序的顶视图,因此在这种情况下,您可以使用片段激活并更改它们。

  4. 重复使用观看次数:创建片段后,您可以在运行时将其添加到活动中的任何活动中使用它们。

  5. 还有很多其他好处,一旦你开始使用,你会发现它们。

    这里有关于android开发人员空间的一个很好的解释:

    http://developer.android.com/guide/components/fragments.html

    阅读本文并做出决定。

答案 1 :(得分:0)

  1. 我总是尝试在活动中使用片段,我希望我的活动尽可能小,片段中包含所有重要的代码。这是推荐的方式,请查看此link

  2. 正如我所写,如果你的活动非常薄,例如显示图像然后是的确定,只使用一项活动,但片段有很多其他好处。就像旋转一样,活动就会消失,但片段仍然活着!

  3. 我真的不认为你理解片段的概念。上面的链接说明了这一点:

  4.   

    片段表示活动中的行为或用户界面的一部分。

    如果您不想要您的片段,请检查activity_main.xml文件并删除片段引用,或者不要使用片段管理器添加它。但你似乎很绿,所以阅读片段,他们使android编程更容易忍受。

答案 2 :(得分:0)

使用一种布局总是更好。在这种情况下,我建议使用activity_main.xml并按照以下过程删除fragment_activity.xml:

1.正常进行项目。

2.将fragment_main.xml复制到activity_main.xml(内容)。然后删除fragment_main.xml

3.在MainActivity.java中删除以下内容:

if (savedInstanceState == null) {
    getFragmentManager().beginTransaction()
            .add(R.id.container, new PlaceholderFragment()).commit();
}

/**
 * A placeholder fragment containing a simple view.
 */
public static class PlaceholderFragment extends Fragment {

    public PlaceholderFragment() {
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_main, container,
                false);
        return rootView;
    }
}

希望这个帮助