2012-04-10 116 views
0

我有一段時間後纔開始的活動。一旦這個活動開始,用戶應該按下一個按鈕來啓動一個新的計時器。運行代碼,直到按下按鈕

但是,如果用戶沒有按下按鈕,我希望每5分鐘顯示一次烤麪包,直到按下按鈕。

我有一個按鈕監聽器:

startBreakButton = (Button) findViewById(R.id.startBreakButton); 
    startBreakButton.setOnClickListener(mStartListener); 

我有顯示吐司和一切運作良好的代碼。

我只是不確定在點擊按鈕之前將代碼放到哪裏。在mStartListener代碼或其他地方,如在onCreate方法?

UPDATE

public class BreakActivity extends Activity { 

Button startBreakButton; // button to start the break timer 
Boolean clicked= false; 
CountDownTimer counter; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.breakscreen); // sets layout to breakscreen.xml 

    MyCount counter; 
    counter=new MyCount(5000,1000); 
    counter.start(); 

    startBreakButton = (Button) findViewById(R.id.startBreakButton); 
    startBreakButton.setOnClickListener(mStartListener); 

    View.OnClickListener mStartListener = new OnClickListener() { 

clicked=true; 
//other listener code 
}; 

public class MyCount extends CountDownTimer{ 
    public MyCount(long millisInFuture, long countDownInterval) { 
    super(millisInFuture, countDownInterval); 
    } 
    @Override 
    public void onFinish() { 
     if(clicked==false){ 
     Toast.makeText(getApplicationContext(), "TAKE A BREAK", Toast.LENGTH_LONG).show(); 
     counter= new MyCount(5000,1000); 
    counter.start(); 
     } 

    } 
    @Override 
    public void onTick(long millisUntilFinished) { 
     long s1 = millisUntilFinished; 

    } 
    } 
    }; 

編輯 - 上述方案不能正常工作,它需要被點擊==假的,不是點擊=假的!

回答

1

嘗試這樣的..

在OnCreate中創建一個acountdowntimer ..

MyCount counter; 
counter=new MyCount(300000,1000); 
counter.start(); 

mycount的類..

public class MyCount extends CountDownTimer{ 
public MyCount(long millisInFuture, long countDownInterval) { 
super(millisInFuture, countDownInterval); 
} 
@Override 
public void onFinish() { 
    if(clicked=false){ 
    //put the toast here 
    counter= new MyCount(300000,1000); 
counter.start(); 
    } 

} 
@Override 
public void onTick(long millisUntilFinished) { 
    s1=millisUntilFinished; 



} 
} 
} 

和onclicklistener startBreakButton放

clicked=true; 
+0

感謝您的回覆。我希望發生的活動稱爲BreakActivity。是否將第一個代碼片段與此活動的onCreate方法以及偵聽器中的第三個代碼片段一起放置?對於第二個代碼片段,我需要創建該類並擴展BreakActivity? – Rob 2012-04-10 11:47:20

+0

在你的活動中創建類myCount .. ..不需要擴展..什麼.. – 5hssba 2012-04-10 11:52:47

+0

好吧,我在BreakActivity的末尾添加了類myCount。然而,在類myCount是說變量計數器,點擊和s1未定義。我添加到Startlistener的clicked = true不能解析爲變量,所以它出錯了某個地方:( – Rob 2012-04-10 12:03:04

0

您可以使用AlarmManager從現在開始設置鬧鐘5分鐘。

然後檢查用戶是否沒有點擊按鈕,顯示敬酒和設置另一個警報。如果用戶點擊了按鈕,則什麼也不做。

0

保留一個標誌,確定按鈕是否被點擊。 如果點擊它,則使該標誌爲真。 如果標誌爲假,則每5分鐘調用一次方法,按住按鈕敬酒。 您可以每5分鐘調用一次計劃方法。

0

呦你應該把toast代碼放在onClicklistener方法裏面。如果條件知道按鈕的狀態是否被按下,我會希望它能起作用。