检查是否使用共享首选项选中单选按钮

时间:2015-07-05 01:33:11

标签: android

我能够在每次应用程序启动时使用共享首选项和加载首选项保存选中的单选按钮,但我想在单选按钮中添加一些代码,即检查是否选中了单选按钮并执行诸如显示吐司之类的操作单独为每个单选按钮。每次活动开始时都不应触发操作,因为我试图在特定时间段后使用AlarmManager设置通知,因此再次调用该方法会重置它

package com.example.radiogroup;

import android.os.Bundle;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;
import android.widget.TextView;
import android.app.Activity;
import android.content.SharedPreferences;

public class MainActivity extends Activity {

 RadioGroup radioGroup;
 TextView textCheckedID, textCheckedIndex;

 final String KEY_SAVED_RADIO_BUTTON_INDEX = "SAVED_RADIO_BUTTON_INDEX";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        radioGroup = (RadioGroup)findViewById(R.id.radiogroup);
        radioGroup.setOnCheckedChangeListener(radioGroupOnCheckedChangeListener);

        textCheckedID = (TextView)findViewById(R.id.checkedid);
        textCheckedIndex = (TextView)findViewById(R.id.checkedindex);

        LoadPreferences();
    }

    OnCheckedChangeListener radioGroupOnCheckedChangeListener =
      new OnCheckedChangeListener(){

    @Override
    public void onCheckedChanged(RadioGroup group, int checkedId) {

     RadioButton checkedRadioButton = (RadioButton)radioGroup.findViewById(checkedId);
     int checkedIndex = radioGroup.indexOfChild(checkedRadioButton);

     textCheckedID.setText("checkedID = " + checkedId);
     textCheckedIndex.setText("checkedIndex = " + checkedIndex);
     SavePreferences(KEY_SAVED_RADIO_BUTTON_INDEX, checkedIndex);
    }};

 private void SavePreferences(String key, int value){
  SharedPreferences sharedPreferences = getSharedPreferences("MY_SHARED_PREF", MODE_PRIVATE);
  SharedPreferences.Editor editor = sharedPreferences.edit();
  editor.putInt(key, value);
  editor.commit(); 
 }

 private void LoadPreferences(){
  SharedPreferences sharedPreferences = getSharedPreferences("MY_SHARED_PREF", MODE_PRIVATE);
  int savedRadioIndex = sharedPreferences.getInt(KEY_SAVED_RADIO_BUTTON_INDEX, 0);
  RadioButton savedCheckedRadioButton = (RadioButton)radioGroup.getChildAt(savedRadioIndex);
  savedCheckedRadioButton.setChecked(true);
 }
}


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

    <RadioGroup
        android:id="@+id/radiogroup"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">
        <RadioButton
            android:id="@+id/option1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Option 1" />
        <RadioButton
            android:id="@+id/option2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Option 2" />
        <RadioButton
            android:id="@+id/option3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Option 3" />
    </RadioGroup>

    <TextView
        android:id="@+id/checkedid"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <TextView
        android:id="@+id/checkedindex"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>

我试过了

if(jRadioButton1.isSelected()){
        jTextField1.setText("Welcome");
    }
    else if(jRadioButton2.isSelected()){
        jTextField1.setText("Hello");
    }

但它没有执行任何操作

1 个答案:

答案 0 :(得分:0)

RadioButton.isChecked();是您需要使用的。如果选中则返回true

private void LoadPreferences(){
  SharedPreferences sharedPreferences = getSharedPreferences("MY_SHARED_PREF", MODE_PRIVATE);
  int savedRadioIndex = sharedPreferences.getInt(KEY_SAVED_RADIO_BUTTON_INDEX, 0);
  RadioButton savedCheckedRadioButton = (RadioButton)radioGroup.getChildAt(savedRadioIndex);
  if(!savedCheckedRadioButton.isChecked())
          savedCheckedRadioButton.setChecked(true);

}