Java android ViewStub充气方法抛出空指针
我正试图通过以下教程在android中构建仪表板布局: 在本教程中,将创建一个抽象类,该类将定义按钮的事件处理程序:Home和Feedback以及其他方法。每个活动都扩展了这个超级类,因为每个活动中都必须显示主页和反馈按钮(主/主页活动除外) 抽象类中定义了此方法,使“主页/反馈”按钮依赖于活动Java android ViewStub充气方法抛出空指针,java,android,nullpointerexception,Java,Android,Nullpointerexception,我正试图通过以下教程在android中构建仪表板布局: 在本教程中,将创建一个抽象类,该类将定义按钮的事件处理程序:Home和Feedback以及其他方法。每个活动都扩展了这个超级类,因为每个活动中都必须显示主页和反馈按钮(主/主页活动除外) 抽象类中定义了此方法,使“主页/反馈”按钮依赖于活动 public void setHeader(String title, boolean btnHomeVisible, boolean btnFeedbackVisible) {
public void setHeader(String title, boolean btnHomeVisible, boolean btnFeedbackVisible)
{
ViewStub stub = (ViewStub) findViewById(R.id.vsHeader);
View inflated = stub.inflate();
TextView txtTitle = (TextView) inflated.findViewById(R.id.txtHeading);
txtTitle.setText(title);
Button btnHome = (Button) inflated.findViewById(R.id.btnHome);
if(!btnHomeVisible)
btnHome.setVisibility(View.INVISIBLE);
Button btnFeedback = (Button) inflated.findViewById(R.id.btnFeedback);
if(!btnFeedbackVisible)
btnFeedback.setVisibility(View.INVISIBLE);
}
例如,显示仪表板布局的“主页”活动不需要显示“主页”按钮,因为它已经是“主页”活动,但是如果从仪表板打开另一个活动,则我希望使“主页”按钮如下所示:
public class Activity_Eclair extends DashBoardActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_eclair);
//Passing true in order to make the home button visible
setHeader(getString(R.string.EclairActivityTitle), true, true);
}
}
但是,该活动不会打开,因为我总是收到NullPointerException,我不知道为什么:
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.ViewStub.inflate()' on a null object reference
ViewStub stub = (ViewStub) findViewById(R.id.vsHeader);
View inflated = stub.inflate()
问题是setHeader方法中的存根变量为null,但我不知道为什么:
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.ViewStub.inflate()' on a null object reference
ViewStub stub = (ViewStub) findViewById(R.id.vsHeader);
View inflated = stub.inflate()
我发现了错误,只是忘了在活动\u eclair中声明ViewStub:
<ViewStub
android:id="@+id/vsHeader"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inflatedId="@+id/header"
android:layout="@layout/header" />
显示您的活动_eclair@Rasi我发布了教程的链接,其中显示了整个代码,我认为在这里发布所有代码太多了。我怀疑XML中存在一些问题,如果您可以添加它,可能会有所帮助。虽然我检查了linkYeah,但您是对的,我很抱歉,我忘记在xml布局中声明ViewStub