0

我有一项活动在一定时间后开始。一旦这个活动开始,用户应该按下一个按钮来启动一个新的计时器。

但是,如果用户没有按下按钮,我希望每 5 分钟显示一次 toast,直到按下按钮。

我有一个按钮监听器:

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

我有显示吐司的代码,其他一切都运行良好。

我只是不确定在单击按钮之前将要运行的代码放在哪里。在 mStartListener 代码中还是在其他地方,例如在 onCreate 方法中?

更新

 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;

    }
    }
    };

编辑 - 上面的解决方案不起作用,它需要被点击==false,而不是点击=false!!

4

4 回答 4

1

试试这样。。

在 oncreate 创建一个倒计时..

 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;



}
}
}

并在 startBreakButton 的 onclicklistener 中放置

clicked=true;
于 2012-04-10T11:26:27.217 回答
0

您可以使用 AlarmManager 从现在开始设置 5 分钟的闹钟。

然后检查用户是否没有点击按钮,显示 toast 并设置另一个警报。如果用户点击了按钮,什么也不做。

于 2012-04-10T11:14:18.277 回答
0

保留一个标志来确定是否单击了按钮。如果单击它,则使该标志为真。如果标志为假,则每 5 分钟调用一次方法,该方法将敬酒以按下按钮。您可以每 5 分钟调用一次 schedule 方法。

于 2012-04-10T11:19:03.860 回答
0

您应该将吐司代码放在onClicklistener方法中。使用if条件来了解按钮是否按下的状态。我希望它会起作用。

于 2012-04-10T12:04:58.347 回答