4
package com.example.koustav.myapplication;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Switch;
import android.widget.TextView;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;

public class MainActivity extends Activity
{

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

    Switch swi = (Switch) findViewById(R.id.swch);
    swi.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener()
    {
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) //Line A
        {

        }
    });

    public void onClick(View view)
    {
        boolean isOn = ((Switch) view).isChecked();

        if (isOn)
        {
            ((TextView) findViewById(R.id.largey)).setTextColor(getResources().getColor(R.color.black));
        }
        else
        {
            ((TextView) findViewById(R.id.largey)).setTextColor(getResources().getColor(R.color.white));
        }

    }

}

このプロジェクトには Android Studio を使用しています。インターウェブで解決策を広範囲に検索しましたが、見つかりませんでした。

私はオブジェクトに使用しようとしていsetOnCheckedChangeListenerますSwitch。ただし、何を試しても、シンボルを解決できない 'setOnCheckedChangeListener'エラーが常に発生します。また、行 A では、オブジェクト buttonView に赤い下線が引かれ、同じエラーCannot Resolve Symbol 'buttonView' が表示されます。

必要な(そして他の人への回答として推奨される)クラスをインポートしました。Android 4.0以降のAPIを使用しています。リスナーはクリックとスワイプの両方で機能するのに対し、スワイプではなくクリックでのみ機能するため、基本的onClickにリスナーを介してメソッドを再実装したいと考えています。onClick

4

3 に答える 3

8

Switch内部で初期化する必要がありますonCreate()

于 2015-04-24T10:31:55.237 に答える
5

動く

  Switch swi = (Switch) findViewById(R.id.swch);
  swi.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener()
    {
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) //Line A
        {

        }
    });

onCreatefindViewByIdアクティビティが作成される前に を呼び出すことはできませswi.setOnCheckedChangeListener(..);ん。これは有効なステートメントではありません

于 2015-04-24T10:33:37.770 に答える