3

4つのラジオボタンを作成しましたが、いずれかがクリックされたときに状態を保存してから、その保存された状態をアプリケーションで使用したいのですが、どうすればよいですか?

                    myOption1.setChecked(true);
        myOption2.setChecked(true);
        myOption3.setChecked(true);
        myOption4.setChecked(true);
4

3 に答える 3

5

アクティビティでonSaveInstanceState()onRestoreInstanceState( ) をオーバーライドします。

@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
  super.onSaveInstanceState(savedInstanceState);
  savedInstanceState.putBoolean("myOption1", myOption1.isChecked());
  savedInstanceState.putBoolean("myOption2", myOption2.isChecked());
  savedInstanceState.putBoolean("myOption3", myOption3.isChecked());
  savedInstanceState.putBoolean("myOption4", myOption4.isChecked());
}

@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
  super.onRestoreInstanceState(savedInstanceState);
  myOption1.setChecked(savedInstanceState.getBoolean("myOption1"));
  myOption2.setChecked(savedInstanceState.getBoolean("myOption2"));
  myOption3.setChecked(savedInstanceState.getBoolean("myOption3"));
  myOption4.setChecked(savedInstanceState.getBoolean("myOption4"));
}
于 2012-07-14T08:17:22.370 に答える
4

全部で 4 つのラジオ ボタンしかない場合は、それらの「値」をSharedPreferences(永続ストレージ) に保存することもできます。

例:

SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor shEditor = sharedPreferences.edit();

shEditor.putBoolean("checkbox_1", myOptionOne.isChecked());
shEditor.putBoolean("checkbox_2", myOptionTwo.isChecked());
shEditor.putBoolean("checkbox_3", myOptionThree.isChecked());
shEditor.putBoolean("checkbox_4", myOptionFour.isChecked());

shEditor.commit();

次のようにして使用します。

SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);

 myOptionOne.setChecked(sharedPreferences.getBoolean("checkbox_1", false));
 myOptionTwo.setChecked(sharedPreferences.getBoolean("checkbox_2", false));
 myOptionThree.setChecked(sharedPreferences.getBoolean("checkbox_3", false));
 myOptionFour.setChecked(sharedPreferences.getBoolean("checkbox_4", false));
于 2012-07-14T08:15:00.990 に答える
0

その値を sharedPreferences コンセプトに保存します。チェックボックスの値の状態を自動的に取得して設定に保存する addPreferencesFromResource() という定義済みのメソッドを使用するサンプル例がここに配置されています。

    public class EditPreference extends PreferenceActivity {

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            //setContentView(R.layout.checkboxpref);
            addPreferencesFromResource(R.layout.checkboxpref);
        }
    }

そしてレイアウトコードはこれでなければなりません:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"

    android:key="@string/checkbox_pref"

    android:title="@string/eidt_preferences">

<CheckBoxPreference

    android:key="@string/pref_12_time_format"

    android:title="@string/time_formats"

    android:summary="@string/twelve_hour" 

    android:defaultValue="true"/>

<CheckBoxPreference

    android:key="@string/pref_show_current_location"

    android:title="@string/show_current_location"

    android:summary="@string/using_gps_network" 

    android:defaultValue="true"/>

<CheckBoxPreference

    android:key="@string/pref_display_date"

    android:title="@string/display_date"

    android:defaultValue="true"/>

</PreferenceScreen>

これで、保存されたチェックボックスの値が次のように取得されました。

SharedPreferences sharedPreference = PreferenceManager
                .getDefaultSharedPreferences(getApplicationContext());
        mTimeFormat = sharedPreference.getBoolean("pref_12_time_format", false);
        mServiceType = sharedPreference.getBoolean(
                "pref_show_current_location", false);
        mDisplayDate = sharedPreference.getBoolean("pref_display_date", false);
于 2012-07-14T08:11:48.370 に答える