我正在关注这里的教程
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);
任何指针都会受到赞赏。
答案 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_main
或activity_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.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;
}
}
希望这个帮助