質問

タイマーは正常に動作します。問題は、ディスプレイに触れた場合、メソッド_dw.newgame()が実行された場合(2秒が終わった場合)実行されることです。たぶんそれは「OntouchListener」と関係があるのでしょうか?

public class DrawView extends View implements OnTouchListener{
Timer timer = new Timer();

public DrawView(コンテキストコンテキスト){Timer.schedule(new Task(This)、0、2000); } public boolean ontouch(ビュービュー、MotionEventイベント){}}

クラスタスクはTimertaskを拡張します{private DrawView _dw;パブリックタスク(DrawView DW){this._dw = dw;} public void run(){_dw.newgame(); }}

役に立ちましたか?

解決

たぶん、あなたはタイマーを開始する必要があります onCreate 方法:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(Bundle savedInstanceState);
    timer = new Timer();
    timer.schedule(new Task(this), 0, 2000);
}

ハンドラーで2番目の試み:

public class DrawView extends View implements OnTouchListener{
    private Timer timer = new Timer();

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

        timer = new Timer();
        timer.schedule(new TimerTask() {
            public void run() {
                handler.sendEmptyMessage();
            }
        }, 0, 2000);
    }

    private Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            newgame();
        }
    };
}

私はこれをコンパイルしませんでしたが、このように機能するはずです。
私は別のことに気づきました:newGame()は一度だけ呼ばれるべきだと思います。

timer.schedule(new Task(this), 0, 2000);
それは2秒ごとに行われます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top