2014-04-30 3 views
0

EditText의 텍스트에 따라 동적으로 추가 및 제거하려는 TextView가 있습니다. 현재 올바르게 removeView를 사용하여 제거를 시작했지만 addView를 호출하려고하면 NullPointerException이 throw됩니다. TextView는 null이 일단 제거 되었기 때문입니다. 여기removeView를 호출 한 후 뷰에 addView 사용

는 내 코드가 어떻게 :

나는 그것이 정확한 시간에 호출되는 응용 프로그램 충돌을 말해 NullPointerException이 발생 할 수있는 매우 마지막 줄이 호출
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); 

. 보기를 읽는 올바른 방법은 무엇입니까?

+0

당신이 처음에 무엇을 원하는가? 그냥 숨기고'TextView'를 보여? 만약 그렇다면'setVisiblity()'로'TextView'의 가시성을 설정함으로써 훨씬 간단하게 할 수 있습니다. 가시성을 숨기려면'View.GONE'을 설정하고 다시 표시하려면'View.VISIBLE'을 설정하십시오. –

+0

내가 그것을 피하고 있었던 이유는 그것이 뷰의 차원을 여전히 그곳에 남겨 놓았 기 때문에, 내가 그것을 완전히 제거하고 싶었던 곳 이었기 때문입니다. – AggieDev

+2

'View.GONE'으로 설정하면'TextView'가없는 것처럼 보입니다. –

답변

-1

첫 번째 TextView final을 선언 했으므로 새 TextView를 만들려고합니다. 이 같은 다른 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); 
} 
1

당신이 당신이 훨씬 간단 가시성을 설정하여 할 수있는 View 숨기려면 세 가지 가시성 값이 있습니다 :

  • View.VISIBLE - 이는 View이 표시됨을 의미합니다.
  • View.INVISIBLE - 즉, View은 보이지 않지만 여전히 레이아웃의 일부입니다.
  • View.GONE - 이는 View이 보이지 않으며 더 이상 레이아웃에 영향을주지 않음을 의미합니다. View.VISIBLE 또는 View.GONE 중 하나에 Views 가시성을 설정 귀하의 경우에는

당신이 찾고있는 것 같다.

당신은이 같은 가시성을 설정할 수 있습니다

textView.setVisiblity(View.VISIBLE); 

또는

textView.setVisibility(View.GONE); 
관련 문제