【问题标题】:Using addView on a View after calling removeView调用 removeView 后在视图上使用 addView
【发布时间】:2014-06-17 05:16:53
【问题描述】:

我有一个想要动态添加和删除的 TextView,具体取决于 EditText 中的文本。我目前使用 removeView 正确地开始删除它,但是当我尝试调用 addView 时,它会抛出 NullPointerException,假设是因为 TextView 在删除后为空?

这是我的代码:

final TextView tagsText = (TextView)postDialogLayout.findViewById(R.id.newPostTagsText);
//remove since start with no tags
((LinearLayout)tagsText.getParent()).removeView(tagsText);

if(currentTags.equals("Tags: <font color='#33B5E5'></font>") && tagsText.isShown())
    ((LinearLayout)tagsText.getParent()).removeView(tagsText);
else if(!currentTags.equals("Tags: <font color='#33B5E5'></font>") && !tagsText.isShown())
    //this line below throws the NullPointerException
    ((LinearLayout)tagsText.getParent()).addView(tagsText);

当最后一行被调​​用时,我可以说它是在正确的时间调用的,应用程序崩溃并抛出一个空指针异常。读取视图的正确方法是什么?

【问题讨论】:

  • 一开始你想做什么?只需隐藏并显示TextView?如果是,您可以通过使用setVisiblity() 设置TextView 的可见性来更简单地做到这一点。如果要隐藏它,请将可见性设置为 View.GONE,如果要再次显示,请将其设置为 View.VISIBLE
  • 我之所以避免这样做是因为它使视图的尺寸仍然存在,我想完全删除它。
  • 如果将其设置为View.GONE,就好像TextView 不存在。

标签: java android xml layout view


【解决方案1】:

您将要创建一个新的 TextView,因为您已将第一个 TextView 声明为 final。如果像这样在 else if 语句中添加额外的一行,它应该可以工作:

else if (!currentTags.equals("Tags: <font color='#33B5E5'></font>") && !tagsText.isShown()) {
    //this line below throws the NullPointerException
     final TextView tagsText1 = (TextView)postDialogLayout.findViewById(R.id.newPostTagsText);
    ((LinearLayout)tagsText.getParent()).addView(tagsText1);
}

【讨论】:

    【解决方案2】:

    如果您想隐藏View,您可以通过设置可见性来更简单地做到这一点,有三个可能的可见性值:

    • View.VISIBLE - 这意味着 View 是可见的。
    • View.INVISIBLE - 这意味着 View 是不可见的,但仍然是布局的一部分。
    • View.GONE - 这意味着 View 是不可见的,不再影响布局。

    在您的情况下,将 Views 可见性设置为 View.VISIBLEView.GONE 似乎是您正在寻找的。​​p>

    您可以像这样设置可见性:

    textView.setVisiblity(View.VISIBLE);
    

    textView.setVisibility(View.GONE);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      • 2015-08-28
      • 1970-01-01
      • 1970-01-01
      • 2014-05-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多