2

修行の目的で、ラジオ ボタンをトグル ボタンとして使用する必要があります。残念ながら、チェックしたままにするか、チェックを外して再チェックすることはできません。考えられるすべての組み合わせを試しましたが、うまくいきません。toggle() は、チェックされていないラジオ ボタンのみをチェックするため、機能しません。isChecker() と setChecked() の組み合わせを試しましたが、うまくいきません。これは私が現在持っているものです:

    pi.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {               
            Log.e("Pistate before",Boolean.toString(pistate));

            if(pistate=true)
                pi.setChecked(false);
            if(pistate=false)
                pi.setChecked(true);
            if(pi.isChecked())
                pistate=true;
            if(!pi.isChecked())
                pistate=false;

            Log.e("Pistate after",Boolean.toString(pistate));
        }
    });

チェックを外すと再チェックされません。pistate は前と後の両方で false を読み取りますが、if() で変更する必要があるため、まったく意味がありません。

4

3 に答える 3

4

別のものを使用して「状態」を維持する必要はありませんBoolean。次のことを行うだけです...

pi.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        pi.setChecked(!pi.isChecked());
    }
});
于 2012-05-29T21:23:44.033 に答える
4

それは比較なので、使用する必要があります==

if(pistate == true)

または、必要なオブジェクト参照の場合

if(object.equals(pistate))

于 2012-05-29T21:10:24.607 に答える
1

まあ私が言うのと同じです。==を使用すると役立ちます。それでも、この方法は可能な限り複雑になります。私はアドバイスします:

pi.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {               
        Log.e("Pistate before",Boolean.toString(pistate));

        pistate = !pistate;
        pi.setChecked(pistate);

        Log.e("Pistate after",Boolean.toString(pistate));
    }
});
于 2012-05-29T21:21:27.690 に答える