2014-03-03 78 views
-1

我用findViewById(),然后设置一个'onclicklistener”的后援代码获得的RadioButton对象是这样:上一个单选按钮点击两次生成IllegalStateException异常

final EditText editTextView = (EditText)findViewById(2001); 
RadioButton rb = (RadioButton) findViewById(R.id.radio3); 
     rb.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 


       LinearLayout linearLayout = (LinearLayout) findViewById(R.id.editTextGroupLayout); 
       LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT); 
       editTextView.setLayoutParams(params); 
       editTextView.setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL| InputType.TYPE_NUMBER_FLAG_SIGNED); 
       editTextView.setId(2001); 
       linearLayout.addView(editTextView); 




      } 
     }); 

当我点击一旦radiobutton它的工作原理fine.But当我点击它两次,它产生

java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first. 

点击两次为什么THI发生了什么异常?

我试图

我试图这样做,它不会执行删除线final EditText editTextView = (EditText)findViewById(2001); 并添加onClick()内这条线,EditText editTextView = (EditText)findViewById(2001);。但即使once.It显示exception了。

+0

您是否想在每次点击RadiButton时添加editext? –

+0

你能解释一下你想要做什么吗?也许你想显示/隐藏'EditText'而不是添加/删除它?至于错误,是由于添加了一个已经存在的EditText引起的。 –

+0

是想添加edittext或每次点击后显示/隐藏它。亚当已经回答了它为我工作。请检查答案。谢谢你的关注。 –

回答

1

这是BEACouse你只有一个edittext的实例,alerady有一个父母后第一次点击。尝试从父级移除视图,然后再放置一次。 或者尝试显示/隐藏它?

你应该做些这样的事情。

linearLayout.removeAllViews(); or linearLayout.removeView(editTextView); 
... 
linearLayout.addView(editTextView); 
+0

嘿@Adam.That是那里的问题。你的解决方案工作。谢谢解释。 –