1

どこを見ても探しているものが見つかりません。

Chronometerの内部を使用してAndroid用のストップウォッチアプリを作成しようとしていますが、一部のボタンでFragmentエラーが発生します。setOnClickListener

括弧「()」fx内の変数です。(mStartListener)、エラーが発生しますmStartListener cannot be resolved to a variable

私を助けてください、私は本当にアンドロイド開発に入りたいです。ありがとうございました

これがコードです

b = (Button) getView().findViewById(R.id.start);
b.setOnClickListener(mStartListener); //--- error
b = (Button) getView().findViewById(R.id.stop);
b.setOnClickListener(mStopListener); //--- error
b = (Button) getView().findViewById(R.id.reset);
b.setOnClickListener(mResetListener); //--- error

完全なコード:

import android.app.Fragment;
import android.os.Bundle;
import android.os.SystemClock;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Chronometer;

public class StopWatchFragment extends Fragment {

    Chronometer mChronometer;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.stopwatch, container, false);

        Button b;
        mChronometer = (Chronometer) getView().findViewById(R.id.chronometer);
        // Watch for button clicks.
        b = (Button) getView().findViewById(R.id.start);
        b.setOnClickListener(mStartListener); //--- error
        b = (Button) getView().findViewById(R.id.stop);
        b.setOnClickListener(mStopListener); //--- error
        b = (Button) getView().findViewById(R.id.reset);
        b.setOnClickListener(mResetListener); //--- error


        return view;


    View.OnClickListener mStartListener = new OnClickListener() {
        public void onClick(View v) {
            mChronometer.start();
        }
    };
    View.OnClickListener mStopListener = new OnClickListener() {
        public void onClick(View v) {
            mChronometer.stop();
        }
    };
    View.OnClickListener mResetListener = new OnClickListener() {
        public void onClick(View v) {
            mChronometer.setBase(SystemClock.elapsedRealtime());
    }
    };
}
}
4

2 に答える 2

1

各リスナーをクラス変数として宣言する場所に移動します。

public class StopWatchFragment extends Fragment {

    Chronometer mChronometer;
    View.OnClickListener mStartListener;
    ...

または、リスナーを使用する前に、リスナーを宣言してください。

Button b;
mChronometer = (Chronometer) getView().findViewById(R.id.chronometer);

View.OnClickListener mStartListener = new OnClickListener() {
    public void onClick(View v) {
        mChronometer.start();
    }
};
...

// Watch for button clicks.
b = (Button) getView().findViewById(R.id.start);
b.setOnClickListener(mStartListener); //--- no more error
于 2012-09-23T16:52:18.887 に答える
0

OnClickListenerとして設定しようとした後、メソッドのmStopListener内部を定義して初期化します。onCreateView

それらをメソッドの先頭に移動する必要があります。

public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.stopwatch, container, false);
   View.OnClickListener mStartListener = new OnClickListener() {
        public void onClick(View v) {
            mChronometer.start();
        }
    };
    View.OnClickListener mStopListener = new OnClickListener() {
        public void onClick(View v) {
            mChronometer.stop();
        }
    };
    View.OnClickListener mResetListener = new OnClickListener() {
        public void onClick(View v) {
            mChronometer.setBase(SystemClock.elapsedRealtime());
        }
    };
    Button b;
    mChronometer = (Chronometer) getView().findViewById(R.id.chronometer);
    // Watch for button clicks.
    b = (Button) getView().findViewById(R.id.start);
    b.setOnClickListener(mStartListener); //--- error
    b = (Button) getView().findViewById(R.id.stop);
    b.setOnClickListener(mStopListener); //--- error
    b = (Button) getView().findViewById(R.id.reset);
    b.setOnClickListener(mResetListener); //--- error

    return view;



}

または、それらをグローバル変数としてメソッドの外に置きます。

于 2012-09-23T16:55:41.957 に答える