简体   繁体   中英

Getting the id of the selected radio button when a button is clicked

Here is what I am trying to do: I have 2 activities, a MainActivity and a SettingsActivity that is opened on the click of a button in MA. In the SA there are 6 radio buttons each with a corresponding colour id (as seen in the if/else statement) in a radio group, and a button to close the activity. When the user presses the close button the background of the MA changes to the colour that is selected by the user. Everything works well, except for the fact that the getCheckedRadioButtonId() method gets the id of the button that is selected when the SettingsActivity is created, which is none, so the colour that shows is always the one in the final else block. I know this should be a really simple fix but I have spent about 4 hours trying every solution I can think of and none of my many google searches have gotten me anything useful.Here is the relevant code:

SettingsActivity.java:

public class SettingsActivity extends AppCompatActivity {                                  

    public static final String colorID = "colorID";                                        

    @Override                                                                              
    protected void onCreate(Bundle savedInstanceState) {                                   
        super.onCreate(savedInstanceState);                                                
        setContentView(R.layout.activity_settings);                                        
        LayoutInflater inflater = LayoutInflater.from(SettingsActivity.this);              
        View settingsView= inflater.inflate(R.layout.activity_settings, null);             

    returnToMain();                                                                                                                                                                                                                                    
    }                                                                                      

    public int getColorValueID(View view) {                                                

        final int colorId;                                                                 
          int id;                                                                          

        final RadioGroup radioGroup = (RadioGroup) view.findViewById(R.id.radioGroup);     

                if(radioGroup.getCheckedRadioButtonId()!= -1) {                            
                    id = radioGroup.getCheckedRadioButtonId();                             
                }                                                                          
                else {                                                                     
                    id = 0;                                                                
                }                                                                          

        if (id == R.id.redButton) {                                                        

            colorId = R.color.red_theme;                                                   

        } else if (id == R.id.blueButton) {                                                

            colorId = R.color.blue_theme;                                                  

        } else if (id == R.id.greenButton) {                                               

            colorId = R.color.green_theme;                                                 

        } else if (id == R.id.orangeButton) {                                              

            colorId = R.color.orange_theme;                                                

        } else if (id == R.id.purpleButton) {                                              

            colorId = R.color.purple_theme;                                                

        } else {                                                                           

            colorId = R.color.blue_theme;                                                  

        }                                                                                  

        return colorId;                                                                    
    }                                                                                      

    public void returnToMain(){                                                            
        Button returnButton = (Button) findViewById(R.id.backToMain);                      

        returnButton.setOnClickListener(new View.OnClickListener() {                       
            @Override                                                                      
            public void onClick(View view) {                                               
                LayoutInflater inflater = LayoutInflater.from(SettingsActivity.this);      
                View settingsView= inflater.inflate(R.layout.activity_settings, null);     

                int color = getColorValueID(settingsView);                                 
                final Intent mIntent = new Intent();                                       
                mIntent.putExtra(colorID, color);                                          
                setResult(RESULT_OK, mIntent);                                             
                finish();                                                                  
            }                                                                              
        });                                                                                
    }                                                                                                                                                                              
}                              

activity_settings.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_settings"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.rileybolen.simplemortgagecalculator.SettingsActivity"
    tools:background="#dedede">

    <TextView
        android:text="@string/settings"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:id="@+id/settingsHeading"
        android:textColor="#494949"
        android:textSize="32sp"
        android:textAlignment="center"
        />

    <RadioGroup
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/themeHeading"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="10dp"
        android:id="@+id/radioGroup">

                <RadioButton
                    android:text="Orange"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:id="@+id/orangeButton"
                    android:layout_alignParentTop="true"
                    android:textColor="@color/orange_theme"
                    android:textSize="18sp"
                    android:layout_marginLeft="20dp"
                    />

                <RadioButton
                    android:text="Purple"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:id="@+id/purpleButton"
                    android:layout_below="@id/orangeButton"
                    android:textColor="@color/purple_theme"
                    android:textSize="18sp"
                    android:layout_marginLeft="20dp"/>

                <RadioButton
                    android:text="Grey"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:id="@+id/greyButton"
                    android:layout_below="@id/purpleButton"
                    android:textColor="#494949"
                    android:textSize="18sp"
                    android:layout_marginLeft="20dp"/>


                <RadioButton
                    android:text="Red"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:id="@+id/redButton"
                    android:layout_alignParentTop="true"
                    android:textColor="@color/red_theme"
                    android:textSize="18sp"
                    android:layout_marginLeft="20dp"/>

                <RadioButton
                    android:text="Blue"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:id="@+id/blueButton"
                    android:layout_below="@id/redButton"
                    android:textColor="@color/blue_theme"
                    android:textSize="18sp"
                    android:layout_marginLeft="20dp"/>

                <RadioButton
                    android:text="Green"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:id="@+id/greenButton"
                    android:layout_below="@id/blueButton"
                    android:textColor="@color/green_theme"
                    android:textSize="18sp"
                    android:layout_marginLeft="20dp"/>


    </RadioGroup>

    <TextView
        android:text="@string/theme_heading"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="28dp"
        android:id="@+id/themeHeading"
        android:textColor="#494949"
        android:textSize="24sp"
        android:layout_below="@+id/settingsHeading"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"/>



        <Button
            android:text="Close"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/backToMain"
            android:layout_alignParentBottom="true"
            />


</RelativeLayout>

Register an onCheckedChanged(RadioGroup group, int checkedId) listener on your RadioGroup

radioGroup.setOnCheckedChangedListener(new OnCheckChangedListener(){
public void onCheckedChanged(RadioGroup group, int checkedId) {

}

});

Something like that..

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM