运行代码直到按下按钮

时间:2012-04-10 11:11:46

标签: android android-activity

我有一项活动在一段时间后开始。一旦此活动开始,用户应按下启动新计时器的按钮。

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

我有一个按钮的监听器:

    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 个答案:

答案 0 :(得分: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;



}
}
}

并在startBreakButton的onclicklistener中添加

clicked=true;

答案 1 :(得分:0)

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

然后检查用户是否没有单击按钮,显示吐司并设置另一个警报。如果用户单击该按钮,则不执行任何操作。

答案 2 :(得分:0)

保留一个标志,确定是否单击了按钮。 如果单击它,则将该标志设为true。 如果flag为false,则每5分钟调用一次方法,这将按下按钮。 您可以每隔5分钟调用一次计划表。

答案 3 :(得分:0)

您应该将toast代码放在onClicklistener方法中。如果条件知道按钮的状态是否被按下,请使用。我希望它能够正常工作。