如何在MainActivity中使用自定义的布局文件?
以下是几个排查和解决的步骤,帮你把自定义布局成功加载到MainActivity里:
确认布局文件名和引用一致
你写的setContentView(R.layout.layout)对应的是res/layout/layout.xml文件,要是你的布局文件名是别的(比如my_first_layout.xml),就得改成R.layout.my_first_layout。另外注意:Android布局文件名只能用小写字母、数字和下划线,不能有大写或特殊符号,否则会编译报错。检查布局文件语法是否正确
打开你的layout.xml文件,看Android Studio左侧有没有红色波浪线或者顶部的错误提示。新手容易犯的错比如:标签没闭合(比如<TextView>忘了写</TextView>)、属性名写错(比如把android:layout_width写成android:width)、引用了不存在的资源(比如@drawable/xxx但drawable里没这个图)。只要布局有语法错误,R文件就不会正确生成,布局自然加载不出来。清理重建项目
有时候Android Studio的缓存会导致R文件没更新,按下面步骤操作:- 点击顶部菜单栏的
Build->Clean Project - 等清理完成后,再点
Build->Rebuild Project
这一步能强制重新编译所有资源,解决大部分R文件异常的问题。
- 点击顶部菜单栏的
确认MainActivity的父类正确
你的MainActivity得继承AppCompatActivity或者Activity,比如:class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.layout) } }如果继承了其他不相关的类,可能导致布局加载失效。
排查是否有代码覆盖布局
检查onCreate方法之后有没有其他代码调用了setContentView,或者有没有用Fragment替换了整个Activity的布局容器,这些操作都会覆盖你之前加载的布局。
内容的提问来源于stack exchange,提问作者meata

