我想要动态添加和删除TextView,具体取决于EditText中的文本。我目前正确地开始使用removeView删除,但是当我尝试调用addView时,它会抛出NullPointerException,假设因为TextView在删除后为null?
以下是我的代码:
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);
当调用最后一行时,我可以告诉它在正确的时间被调用,应用程序崩溃并抛出nullpointerexception。读取视图的正确方法是什么?
答案 0 :(得分:1)
如果要隐藏View
,您可以通过设置可见性来更简单地做到这一点,有三种可见的可见性值:
View.VISIBLE
- 这意味着View
可见。View.INVISIBLE
- 这意味着View
不可见,但仍然是布局的一部分。View.GONE
- 这意味着View
不可见,不再影响布局。在您设置的情况下,Views
或View.VISIBLE
的{{1}}可见性似乎正是您所寻找的。 p>
您可以像这样设置可见性:
View.GONE
或
textView.setVisiblity(View.VISIBLE);
答案 1 :(得分:-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);
}