Android:我无法通过其ID获取布局对象

时间:2012-01-20 21:43:12

标签: java android xml layout

这是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是正确的,可以毫无问题地获取所有其他元素。

3 个答案:

答案 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

设置contentView
setContentView(R.layout.main); //this will put it on the screen.