2012-12-14 290 views
0

我正在構建一個籃球比分時鐘應用程序。我的主要定時器運行良好。當我點擊它時,它會啓動時鐘,當我再次點擊時,它會停止時鐘。這工作完美。onClick事件不會觸發

我已經實例化了第二個用於拍攝時鐘的對象。但是,onClick事件根本不會觸發第二個textview。

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

} 
+2

你聲明'安卓的onClick = 「onShotClockClick」'在爲第二TextView的佈局XML(拼寫正確)?您可能也想添加xml代碼。你有沒有嘗試清理這個項目? –

+0

我複製並粘貼到eclipse側的屬性字段中。我也檢查了xml代碼以確保它被正確插入。它似乎就在那裏。 –

+0

好的添加xml不會傷害。另外,你是否嘗試以編程方式製作onClickListener? –

回答

0

TextView onClick() not working,你需要

Android的設置:點擊= 「真」

到TextViews因爲它們不是默認點擊。

您也可以通過編程連接OnClickListeners像這樣:

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