2012-04-10 112 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方法里面。如果条件知道按钮的状态是否被按下,我会希望它能起作用。