在radiobutton上单击两次会生成illegalstateexception

时间:2014-03-03 07:18:57

标签: android radio-button illegalstateexception

我使用RadioButton获取findViewById()的对象,然后为其设置`onclicklistener'。代码如下:

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上的一次时,它运行正常。但是当我点击两次时,会生成

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

点击两次,为什么会发生此异常?

我尝试了什么

我尝试删除该行final EditText editTextView = (EditText)findViewById(2001); 并在onClick()EditText editTextView = (EditText)findViewById(2001);中添加此行。但是,通过执行此操作,它甚至不会执行一次。它也会显示exception

1 个答案:

答案 0 :(得分:1)

如果你只有一个edittext实例,那么alerady在第一次点击后就有了父母。尝试从父级中删除视图,然后重新放置它。 或者也许尝试显示/隐藏它?

你应该做这样的事情。

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