在android中隐藏包含的布局

时间:2013-07-15 11:53:33

标签: android include relativelayout

我必须开发一个Android应用程序。

我创建了一个使用include标记使用其他布局文件的布局文件。

  <include
    android:id="@+id/footer"
    android:layout_width="match_parent"
    android:layout_height="60dp"
    android:layout_alignParentBottom="true"
    layout="@layout/footer_tabs" />
  <include
    android:id="@+id/footer1"
    android:layout_width="match_parent"
    android:layout_height="60dp"
    android:layout_alignParentBottom="true"
    layout="@layout/footertabs" />

我想在响应为空时显示包含的布局,否则我想隐藏布局并显示另一个。以下是我到目前为止的情况:

footertabs = (RelativeLayout) findViewById(R.id.footertab);
footer_tabs = (RelativeLayout) findViewById(R.id.footer_tab);

if (Constants.response==null) {
    footertabs.setVisibility(View.VISIBLE);
    footer_tabs.setVisibility(View.GONE);
}
else
{
    footertabs.setVisibility(View.GONE);
    footer_tabs.setVisibility(View.VISIBLE);
}

但我收到以下错误:

07-15 17:19:09.893: E/AndroidRuntime(15143): Caused by: java.lang.NullPointerException
07-15 17:19:09.893: E/AndroidRuntime(15143):    at com.example.androidbestinuk.HomePage.onCreate(HomePage.java:56)

请帮我调试此错误。

3 个答案:

答案 0 :(得分:5)

你应该改变

footertabs = (RelativeLayout) findViewById(R.id.footertab);
footer_tabs = (RelativeLayout) findViewById(R.id.footer_tab);

footertabs = (RelativeLayout) findViewById(R.id.footer);
footer_tabs = (RelativeLayout) findViewById(R.id.footer1);

答案 1 :(得分:1)

好吧,在我看来你使用的是错误的id。你在某个地方得到一个空指针(我不知道哪里因为没有行号),但我在你的xml中看到你有id,footerfooter1,但在你的代码中你正在尝试查找ID为footertabfooter_tab的元素。你应该把这些id匹配。

答案 2 :(得分:0)

使用ViewBinding和Kotlin,可以这样实现

binding.yourInclude.root.visibility = View.GONE

对于 <include> 标签内的特定视图,请使用下面的代码

binding.yourInclude.textView.visibility = View.GONE