onClick事件不会触发

时间:2012-12-14 02:47:57

标签: java android

我正在建立一个篮球比分时钟应用程序。我让主计时器运行良好。当我点击它时它会启动时钟,当我再次点击时它会停止时钟。这很完美。

我已经实例化了第二个用于拍摄时钟的对象。但是,onClick事件根本没有针对第二个文本视图触发。

两个onClick事件都在TextView元素上设置。当我点击第二个文本视图时,我不知道为什么方法onClickShotClock(View view)没有触发。

我知道对象是正确实例化的,因为它正确设置了值,并通过代码设置了值来实例化它。

任何人都可以看到这不起作用吗?

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;
        }
        */      
    }

} 

1 个答案:

答案 0 :(得分:0)

根据TextView onClick() not working,您需要设置

  

机器人:可点击= “真”

到TextViews,因为它们默认不可点击。

您也可以通过编程方式附加OnClickListeners,如下所示:

strShotClick.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        onShotClockClick(v);            
    }
});