findViewById返回null,即使具有id的对象存在

时间:2017-02-20 23:31:20

标签: android

我的布局文件中有一个嵌套的RelativeLayout:

...
<RelativeLayout
        android:id="@+id/signin_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/login_button"
        android:padding="5dp"
        android:layout_marginTop="10dp"
        android:background="#e4ffd2">
...

我想把它设置为不可见。因此,我在与此文件相关的活动中执行以下操作:

public class LoginActivity extends AppCompatActivity implements View.OnClickListener {
    ...
    private RelativeLayout signinLayout;
    ...
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        signinLayout = (RelativeLayout) findViewById(R.id.signin_layout);
        signinLayout.setVisibility(View.INVISIBLE);

findViewById返回null,即使显然存在具有所述id的布局文件中的View。为什么会这样?

2 个答案:

答案 0 :(得分:0)

这是因为您没有夸大调用setContentView()

的布局

答案 1 :(得分:-1)

您尝试获取的视图并不存在,因为您没有将您的布局定义与您的活动联系起来。您需要将活动的内容设置为您的布局。

setContentView(R.layout.my_layout)

这将使您的活动将您的布局扩展到其中,这是实际创建您已定义的视图的步骤。完成此操作后,您可以通过findViewById()访问这些视图。

相关问题