这是xml代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
</LinearLayout>
这是Java代码:
View mainLayout = findViewById(R.id.mainLayout);
// Or: LinearLayout mainLayout = (LinearLayout)findViewById(R.id.mainLayout);
Log.d("LAYOUT", mainLayout == null ? "NULL" : "NOT NULL"); // Always prints null
布局始终为空。
为什么? id是正确的,可以毫无问题地获取所有其他元素。
答案 0 :(得分:4)
您是否已使用以下代码将其附加到活动中?
setContentView(R.layout.layout_id);
答案 1 :(得分:3)
直接调用findViewById()
只有在视图当前可通过应用程序的setContentView(ID.OF.LAYOUT)
显示时才有效。否则,您必须自己给视图充气。如果您已有视图对象,则可以从中提取其他视图:
View v = alreadyInflatedView.findViewById(R.id.idOfChildView);
编辑:
如何给视图充气:
LayoutInflater inflater =(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = inflater.inflate(R.layout.idOfViewToInflate, null);
答案 2 :(得分:1)
您需要从xml
设置contentViewsetContentView(R.layout.main); //this will put it on the screen.