3

設定画面に3つのチェックボックスがあります。ユーザーに一度に1つのチェックボックスのみを選択させたい。どうすればこれを達成できますか?

前もって感謝します。

4

4 に答える 4

2

onpreferenceChangelistener を作成する必要があります。

prefChangeListener = new Preference.OnPreferenceChangeListener() {

                @Override
                public boolean onPreferenceChange(Preference preference, Object newValue) {
                    if (preference == pref1 && newValue.toString().equals("true")){
                        pref2.setChecked(false);
                        pref3.setChecked(false);
                    }
                    if (preference == pref2 && newValue.toString().equals("true")){
                        pref1.setChecked(false);
                        pref3.setChecked(false);
                    }
                    if (preference == pref3 && newValue.toString().equals("true")){
                        pref1.setChecked(false);
                        pref2.setChecked(false);
                    }
                    return true;    
                }
        };

それからそれを使用するには、

pref1.setOnPreferenceChangeListener(prefChangeListener);
pref2.setOnPreferenceChangeListener(prefChangeListener);
pref3.setOnPreferenceChangeListener(prefChangeListener);

または、ラジオ グループをポップアップする ListPreference を使用して、そこに 3 つのオプションを配置することもできます。それが私がアプリで行ったことですが、チェックボックスの設定が必要な場合は、もちろん機能します。

これが私のリスト設定です(鳴る時間を選択するため):

<ListPreference android:persistent="true"
            android:title="Ring Time"
            android:summary="Choose how long the phone will ring when activated"
            android:key="ringTime"
            android:defaultValue="ringNot"
            android:entries="@array/ringTime"
            android:entryValues="@array/ringSetting" />

@array/ringTime と @array/ringSetting の XML は次のとおりです。

 <?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="ringTime">
   <item>Don\'t Ring</item>
   <item>Ring 30 Seconds</item>
   <item>Ring 2 Minutes</item>   
   <item>Ring 5 Minutes</item>
</string-array>
<string-array name="ringSetting">
   <item>ringNot</item>
   <item>ring30Sec</item>
   <item>ring2Min</item>   
   <item>ring5Min</item>
</string-array>

</resources>

これは今日の時点で5か月前の質問であることは知っていますが、これは他の誰かに役立つかもしれないと思いました. :)

そして、私のコード内に listpreference を実装するために:

ringTime = pref.getString("ringTime", "ringNot");//ListPreferences are stored as strings
if (ringTime.equals(ring30Sec))
//ring for 30 seconds
else if (ringTime.equals(ring2Min))
//ring for 2 minutes
else if (ringTime.equals(ring5Min))
//ring for 5 minutes
else Toast.makeText(getBaseContext(), "Not Ringing", Toast.LENGTH_LONG).show(); 
于 2011-07-31T18:16:42.487 に答える
1

これはラジオボタンと呼ばれます。どういたしまして

于 2011-02-21T06:57:35.603 に答える
0

多分ラジオグループを使用していますか?:) http://developer.android.com/resources/tutorials/views/hello-formstuff.html#RadioButtons

または、チェックボックスウィジェットを本当に使用する必要がある場合は、isChecked()を使用して他のチェックボックスをチェックし、OnCheckedChangeListenerクラスの実装でsetChecked(false)を使用してチェックを外すことができます。

于 2011-02-21T06:57:25.837 に答える