Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java android ViewStub充气方法抛出空指针_Java_Android_Nullpointerexception - Fatal编程技术网

Java android ViewStub充气方法抛出空指针

Java android ViewStub充气方法抛出空指针,java,android,nullpointerexception,Java,Android,Nullpointerexception,我正试图通过以下教程在android中构建仪表板布局: 在本教程中,将创建一个抽象类,该类将定义按钮的事件处理程序:Home和Feedback以及其他方法。每个活动都扩展了这个超级类,因为每个活动中都必须显示主页和反馈按钮(主/主页活动除外) 抽象类中定义了此方法,使“主页/反馈”按钮依赖于活动 public void setHeader(String title, boolean btnHomeVisible, boolean btnFeedbackVisible) {

我正试图通过以下教程在android中构建仪表板布局:

在本教程中,将创建一个抽象类,该类将定义按钮的事件处理程序:Home和Feedback以及其他方法。每个活动都扩展了这个超级类,因为每个活动中都必须显示主页和反馈按钮(主/主页活动除外)

抽象类中定义了此方法,使“主页/反馈”按钮依赖于活动

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