2015-07-05 110 views
-1

我可以使用共享首選項和加載首選項保存選中的單選按鈕,每次啓動應用程序時,但我想添加一些代碼到單選按鈕,即檢查單選按鈕是否選中並執行諸如爲每個單選按鈕單獨顯示敬酒的動作。每次活動開始時都不應該觸發動作,因爲我試圖使用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"); 
    } 

但它不執行任何操作

回答

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); 

}