Динамическое создание RadioButton со строковым массивом

Im пытается создать RadioButton из String Array, но он не работает, если я использую только String, тогда он работает нормально. Log Cat. Отображает ошибку. Ava.lang.IllegalStateException: указанный дочерний элемент уже имеет родителя. Вы должны вызвать removeView () на Родитель ребенка первым ».

Я знаю, что ошибка наступает Beacuse. Объект RadioButton не создается динамически, поэтому отображается ошибка.

Я взял код здесь для справки, пожалуйста, проверьте этот URL-адрес http://android.okhelp.cz/create-radiobutton-radiogroup-dynamically-android-sample/

Пожалуйста, проверьте код и исправьте меня, чтобы я пошел дальше с моим приложением. Вот код

LinearLayout layout = (LinearLayout) findViewById(R.id.layout); RadioGroup radioGroup = new RadioGroup(this); LinearLayout.LayoutParams p = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT ); // adding Radio Group layout.addView(radioGroup, p); // creating Radio buttons Object// RadioButton radioButtonView = new RadioButton(this); String[] ab ={"1","2"}; for(int i =0; i<ab.length;i++) { radioButtonView.setText(ab[i]); radioGroup.addView(radioButtonView, p); ((ViewGroup)layout.getParent()).removeView(layout); } 

И ошибка Log Cat

  I/Choreographer(4431): Skipped 547 frames! The application may be doing too much work on its main thread. D/AndroidRuntime(4431): Shutting down VM W/dalvikvm(4431): threadid=1: thread exiting with uncaught exception (group=0xb2d2fb20) FATAL EXCEPTION: main Process: com.example.radiobuttondynamic, PID: 4431 java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first. at android.view.ViewGroup.addViewInner(ViewGroup.java:3562) at android.view.ViewGroup.addView(ViewGroup.java:3415) at android.widget.RadioGroup.addView(RadioGroup.java:141) at android.view.ViewGroup.addView(ViewGroup.java:3391) at com.example.radiobuttondynamic.Radio_Button.onCreateOptionsMenu(Radio_Button.java:46) at android.app.Activity.onCreatePanelMenu(Activity.java:2538) at com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:436) at com.android.internal.policy.impl.PhoneWindow.doInvalidatePanelMenu(PhoneWindow.java:800) at com.android.internal.policy.impl.PhoneWindow$1.run(PhoneWindow.java:221) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761) at android.view.Choreographer.doCallbacks(Choreographer.java:574) at android.view.Choreographer.doFrame(Choreographer.java:543) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747) at android.os.Handler.handleCallback(Handler.java:733) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5017) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) at dalvik.system.NativeStart.main(Native Method) D/dalvikvm(4431): GC_FOR_ALLOC freed 142K, 7% free 3094K/3308K, paused 107ms, total 113ms 

Ищите помощь благодаря

IllegalStateException: указанный ребенок уже имеет родителя. Сначала вы должны вызвать removeView () родителя ребенка.

Поскольку вы добавляете тот же экземпляр RadioButton снова в LinearLayout .

Создание объекта цикла RadioButton in for:

  for(int i =0; i<ab.length;i++) { RadioButton radioButtonView = new RadioButton(this); radioButtonView.setText(ab[i]); radioGroup.addView(radioButtonView, p); ((ViewGroup)layout.getParent()).removeView(layout); } 

Внутри цикла, чтобы избежать ошибки.

Если у вас есть этот массив: –

 String route[] = {"1", "3", "4"}; 

Вы можете создавать переключатели с помощью цикла: –

 for (int i = 0; i < route.length; i++) { RadioButton radioButton = new RadioButton(this); radioButton.setText("Route " + String.valueOf(route[i])); radioButton.setId(i); rprms = new RadioGroup.LayoutParams(RadioGroup.LayoutParams.WRAP_CONTENT, RadioGroup.LayoutParams.WRAP_CONTENT); rgp.addView(radioButton, rprms); } 

И вы можете получить выбранное поле, используя: – (У меня есть кнопка SAVE, поэтому этот код написан в прослушивателе onClick). Кроме того, вы можете использовать onCheckedChangeListener.

 int selection = rgp.getCheckedRadioButtonId(); for (int i = 0; i < route.length; i++) { if (i == selection) showToast("" + route[i]); } 

Ошибка заключается в том, что вы пытаетесь добавить один и тот же RadioButton несколько раз в один и тот же макет, вам нужно переместить создание Radiobutton внутри цикла

  String[] ab ={"1","2"}; for(int i =0; i<ab.length;i++) { RadioButton radioButtonView = new RadioButton(this); radioButtonView.setText(ab[i]); radioGroup.addView(radioButtonView, p); ((ViewGroup)layout.getParent()).removeView(layout); }