fragment_main.xml和activity_main.xml之间的区别

时间:2014-03-25 07:20:55

标签: java android xml android-fragments

我正在关注这里的教程

https://developer.android.com/training/basics/firstapp/building-ui.html

我很困惑他们为什么要编辑fragment_main.xml而不是activity_main.xml。在MainActivy.java文件中,onCreate()方法有一行

setContentView(R.layout.activity_main);

为什么在我尝试将其更改为

时会抱怨
setContentView(R.layout.fragment_main);

任何指针都会受到赞赏。

4 个答案:

答案 0 :(得分:2)

活动是片段的容器,片段就像一个UI层,可以在执行时添加,修改或删除。同样在活动布局中,您可以添加“静态”片段。

如果交换布局,可能会导致错误的原因很多,也许您的活动代码会尝试引用一些不在片段布局中的视图,反之亦然,活动布局可能会引用片段等。您可以根据需要命名布局,但需要设置与活动/片段中的代码匹配的布局

答案 1 :(得分:0)

你必须使用

setContentView(R.layout.activity_main);

在您的程序中作为setContentView(R.layout.fragment_main);在一个活动中使用不同碎片时使用

并且您收到错误,因为res文件夹中没有名为fragment_main.xml的xml文件。

答案 2 :(得分:0)

如果你希望你也可以给你的GF:D名称,那就是它的名字fragment_mainactivity_main

即,当您将布局文件添加到res / layout路径时,条目将成为R.java中的佣人

说您在main.xml中创建了res/layout,当您清理项目时,条目R.layout.main 将被添加到R.java只是您给文件的名称。

可能是您收到错误,因为该文件不存在或者该文件可能不包含布局。

答案 3 :(得分:0)

两者都是可选的。但是,使用一种布局可以更好地避免混淆代码。在这种情况下,我会建议您使用activity_main.xml并按照以下程序删除fragment_activity.xml

1.正常进行项目。

2.Copy fragment_main.xmlactivity_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;
    }
}

希望这个帮助