3

私がやろうとしているのはSharedPreferences、音量と振動がまたはであるかどうかonを確認することですoff。オンの場合は、ToggleButtonに設定する必要があります。onそれ以外の場合は、に設定する必要がありますoff

すでにsを使ってみsetChecked()ましsetSelected()たが、 sの状態ToggleButtonは変わりませんでした。TogggleButton

trueまた、との変数を初期化falseして確認しましたが、それでも機能しません。

問題であると想定されるのは?

    optionsDB = getSharedPreferences(table, 0);

    String volReturned = optionsDB.getString("volume", "Couldn't load data");
    String vibReturned = optionsDB.getString("vibration", "Couldn't load data");
    Toast.makeText(this, "Vol: "+volReturned+" Vib: "+ vibReturned, Toast.LENGTH_LONG).show();
    boolean boolT = true;
    boolean boolF = false;
    if (volReturned=="On"){
        /*tbtnvol.setChecked(true);*/
        tbtnvol.setSelected(boolT);
    }else{
        tbtnvol.setSelected(boolF);
        }
    if (vibReturned=="On"){
        tbtnvib.setSelected(boolT);
    }else{
        tbtnvib.setSelected(boolF);
        }
4

2 に答える 2

6

ToggleViewに関連する2つのメソッドがあります。

  1. setChecked(ブール値)

  2. setSelected(ブール値)

そして、それらの両方がペアで使用されます。トグルビューを選択して設定する場合は、これらのメソッドの両方に「true」を渡します。その逆も同様です。

その理由は、setChecked()がビューオブジェクトに関連付けられた固有のブールデータメンバーを設定し、setSelectedがビューオブジェクトに関連付けられたUIを設定するためです。

はい、これは有線であり、実際には1つのメソッドでUIとデータの両方を設定する必要がありますが、これが実装方法であるため、これらのメソッドをペアで使用する必要があります。

于 2016-08-05T15:23:12.590 に答える
5

文字列の比較に==使用する代わりに。.equals()

これを試して、

if (volReturned.equals("On")){
        /*tbtnvol.setChecked(true);*/
        tbtnvol.setSelected(boolT);
    }else{
        tbtnvol.setSelected(boolF);
        }
    if (vibReturned.equals("On")){
        tbtnvib.setSelected(boolT);
    }else{
        tbtnvib.setSelected(boolF);
        }
于 2012-04-09T08:32:41.297 に答える