0

私はバスケットボールのスコア時計アプリを構築しています。メインタイマーがうまく機能しました。クリックすると時計が始まり、もう一度クリックすると時計が止まります。これは完璧に機能します。

ショット クロック用の 2 つ目のオブジェクトをインスタンス化しました。ただし、onClickイベントは2番目のテキストビューではまったく発生していません。

どちらonClickのイベントも TextView 要素で設定されます。onClickShotClock(View view)2 番目のテキスト ビューをクリックしたときにメソッドが起動しない理由がわかりません。

値が正しく設定されており、インスタンス化するコードを介して値が設定されているため、オブジェクトが正しくインスタンス化されていることがわかります。

これが機能していないことを誰かが見ることができますか?

package com.example.ultimatescoreclock;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.TextView;
import android.os.CountDownTimer;
import com.example.ultimatescoreclock.ScoreClock;

public class MainActivity extends Activity {

    TextView strMainClock, strShotClock;
    ScoreClock timerMainClock, timerShotClock; 
    long msSavedMainClock = 0;
    long msSavedShotClock = 0;

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

        strMainClock = (TextView) findViewById(R.id.clockMain);
        strShotClock = (TextView) findViewById(R.id.clockShot);

        timerMainClock = new ScoreClock( 13000, 100, strMainClock );
        timerShotClock = new ScoreClock( 8000, 100, strShotClock );

        strMainClock.setText( timerMainClock.getTimeLeft() );
        strShotClock.setText( timerShotClock.getTimeLeft() );
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

    public void onMainClockClick(View view) {

        if ( !timerMainClock.isRunning ) {

            if ( msSavedMainClock != 0 )
                timerMainClock = new ScoreClock( msSavedMainClock, 100, strMainClock );

            timerMainClock.start();
            timerMainClock.isRunning = !timerMainClock.isRunning;
        } else {
            timerMainClock.cancel();
            msSavedMainClock = timerMainClock.msRemaining;
            timerMainClock.isRunning = !timerMainClock.isRunning;
        }       
    }

    public void onShotClockClick(View view) {

        strShotClock.setText("go!");
        /*
        if ( !timerShotClock.isRunning ) { 

            if ( msSavedShotClock != 0 )
                timerShotClock = new ScoreClock( msSavedShotClock, 100, strShotClock );

            timerShotClock.start();
            timerShotClock.isRunning = !timerShotClock.isRunning;
        } else {
            timerShotClock.cancel();
            msSavedShotClock = timerShotClock.msRemaining;
            timerShotClock.isRunning = !timerShotClock.isRunning;
        }
        */      
    }

} 
4

1 に答える 1

0

TextView onClick() not workingによると、設定する必要があります

アンドロイド: クリック可能 = "真"

デフォルトではクリックできないため、TextViews に。

次のようにプログラムで OnClickListeners をアタッチすることもできます。

strShotClick.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        onShotClockClick(v);            
    }
});
于 2012-12-14T14:30:55.170 に答える