I have the following XML code:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/
android"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent">
     <RadioGroup
          android:orientation="horizontal"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_alignParentBottom="true">
          <RadioButton
               android:id="@+id/_2D"
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:text="2D"/>
          <RadioButton
               android:id="@+id/_3D"
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:text="3D"/>
     </RadioGroup>
</RelativeLayout>

And I have the following Java code:
     public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.main);

          if (savedInstanceState == null) {
               RadioGroup.OnCheckedChangeListener buttonListener = new
RadioGroup.OnCheckedChangeListener() {
                    @Override
                    public void onCheckedChanged(RadioGroup group, int
checkedId) {
                         if (checkedId == R.id._2D) {
 
main.removeView(findViewById(R.id._3D));
                              main.addView(_2D);
                         }
                         else if (checkedId == R.id._3D) {
 
main.removeView(findViewById(R.id._2D));
                              main.addView(_3D);
                         }
                    }
               };
               RadioGroup dimensions = (RadioGroup)
findViewById(R.id.dimensions);
               dimensions.setOnCheckedChangeListener(buttonListener);
          }
          _2D = new _2DView(this);
          _3D = new _3DView(this);
          main = (RelativeLayout) findViewById(R.id.window);

          RadioGroup dimensions = (RadioGroup)
findViewById(R.id.dimensions);
          if (dimensions.getCheckedRadioButtonId() == R.id._2D) {
               main.addView(_2D);
          }
          else if (dimensions.getCheckedRadioButtonId() == R.id._3D)
{
               main.addView(_3D);
          }
     }

The idea is to change the views, whenever I press one of the radio
buttons. When I press a button the first time everything works out
fine, but the second time I press a button, I get an
IllegalStateException, and I can't quite see why I'm getting this.

Also, the Activity seems to set all my global variables to null, which
is why I have to create them every time I switch from portrait to
landscape or vice versa. So I would like to know if there is a way I
can save my views in the Bundle, or any other way in which I can
permanently save my views, so I don't have to add or create them every
time, I flip the phone. And whenever I flip the phone, it seems that
it rereads the main XML file, causing the RadioGroup to be set to 2D
even if the 3D button is checked. This is because I've said the 2D
button to be checked from when the app is first created, but I would
like to also save the state of that RadioGroup.

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to