您好我已编码以下内容以从包含布局获取视图。但我得到空指针异常。我哪里错了?
我的Java代码:
View actionbar = findViewById(R.id.actionbar);
RelativeLayout actionRRl = (RelativeLayout)actionbar.findViewById(R.id.actionRR);
actionRRl.setEnabled(false);
actionRRl.setClickable(false);
在我的Activity.xml中,
<include
android:id="@+id/actionbar"
layout="@layout/actionbar" />
包含的布局,即actionbar.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/header"
android:focusable="false"
android:focusableInTouchMode="false"
android:clickable="false"
android:id="@+id/actionRR"
android:orientation="vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:clickable="false"
android:padding="@dimen/logo_size"
android:src="@drawable/logo" />
</RelativeLayout>
错误堆栈:
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.View.setEnabled(boolean)' on a null object reference
答案 0 :(得分:1)
为您所包含的布局提供ID,如下所示:
--git
覆盖您所包含布局中的父ID。
在您的情况下,将代码更改为此应解决问题:
<include android:id="@+id/actionbar"
答案 1 :(得分:0)
一旦您将工具栏布局包含在您的活动中,它们的组件也属于您的活动,因此您可以直接实例化它们
RelativeLayout actionRRl = (RelativeLayout) findViewById(R.id.actionRR);
actionRRl.setEnabled(false);
actionRRl.setClickable(false);
答案 2 :(得分:0)
试试这个
RelativeLayout actionRRl = (RelativeLayout)findViewById(R.id.actionRR);
actionbar.setEnabled(false);
actionbar.setClickable(false);
你也可以通过夸大布局来获取视图并按照这样做,
View actionbar = LayoutInflater.from(this).inflate(R.layout.actionbar, null, false);
RelativeLayout actionRRl = (RelativeLayout)actionbar.findViewById(R.id.actionRR);
actionRRl.setEnabled(false);
actionRRl.setClickable(false);