我有一项活动在一段时间后开始。一旦此活动开始,用户应按下启动新计时器的按钮。
但是,如果用户没有按下按钮,我希望每隔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 !!
答案 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方法中。如果条件知道按钮的状态是否被按下,请使用。我希望它能够正常工作。