倒数计时器return布尔值
Countdown timer return the value of boolean
我有一个倒数计时器,我想在调用 class 时得到 return 值,这是我的 class CountdownTimer
public class CountDownTimerActivity extends CountDownTimer {
public boolean finish = false;
public CountDownTimerActivity(long startTime, long interval) {
super(startTime, interval);
}
@Override
public void onFinish()
{
finishTime(true);
}
@Override
public void onTick(long millisUntilFinished) {
finishTime(false);
Log.e("TESTINg","" + millisUntilFinished/1000);
}
public boolean finishTime(boolean finish) {
return finish;
}
}
这是我的来电倒计时
CountDownTimerActivity countdowntimer = new CountDownTimerActivity(5000,1000);
countdowntimer.start();
if(// I DONT KNOW WHAT WILL I PUT HERE)
{
Log.e("Testing", "OK na");
}
谁能帮帮我?谢谢
我认为它不起作用,因为您从未在代码中将变量 finish 设置为 true。您必须将 onFinish 方法中的代码更改为 finish = true 然后在 onTick 方法中放入一个逻辑来检查它是否已经完成然后调用 onFinish() 方法;
我认为您无法 return 来自 CountDownTimer 的值。
理想情况下,您应该启动计时器并在回调方法中实现您必须执行的操作 -
abstract void onFinish()
//Callback fired when the time is up.
abstract void onTick(long millisUntilFinished)
//Callback fired on regular interval.
实施示例
https://androidcookbook.com/Recipe.seam;jsessionid=DF53064E03C7505C4EBF727E56E0728E?recipeId=1205
CountDownTimer 是一个非常简单的 class,你不需要为它制作一个完整的 class,你可以在你的调用者 class 上创建它,这样你可以在完成时调用回调函数。
public class MyActivity extends Activity{
//Other methods and variables
CountDownTimer countdowntimer = new CountDownTimer(5000,1000){
@Override
public void onFinish() {
//Call the callback from your activity
}
@Override
public void onTick(long millisUntilFinished) {
Log.e("TESTINg","" + millisUntilFinished/1000);
}
};
}
如果由于某种原因你必须在不同的 class 中创建它,那么在那个 class 中你必须创建一个接口,你的 activity 必须在你的完成方法调用中实现接口侦听器的方法。
像片段一样:
我想你想要完成的是定时器到期时的回调?如果是这样,你必须自己考虑定时器 运行 ,然后在完成时调用另一个方法。例如:
public class Main extends Activity
{
private MyCountDownTimer myCountDownTimer;
@Override
public void onCreate(Bundle savedInstanceState){
myCountDownTimer = new MyCountDownTimer(5000, 1000);
myCountDownTimer.start();
}
public void finished(){
Log.e("Testing", "OK na");
}
public class MyCountDownTimer extends CountDownTimer {
public MyCountDownTimer(long startTime, long interval) {
super(startTime, interval);
}
@Override
public void onFinish() {
finished();
}
@Override
public void onTick(long millisUntilFinished) {
Log.e("TESTINg","" + millisUntilFinished/1000);
}
}
}
查看此 link 了解更多 details/example:
https://androidcookbook.com/Recipe.seam;?recipeId=1205
编辑以制作可用于其他活动的通用 class,我会做这样的事情。
创建一个 MyCountDownTimer
class 在它自己的文件中看起来像这样:
public class MyCountDownTimer extends CountDownTimer {
private MyCallback myCallback;
public MyCountDownTimer(long startTime, long interval) {
super(startTime, interval);
}
public Interface MyCallBack{
void callback();
}
@Override
public void onFinish() {
myCallback.callback();
}
@Override
public void onTick(long millisUntilFinished) {
Log.e("TESTINg","" + millisUntilFinished/1000);
}
public void setMyCallback(MyCallback myCallback){
this.myCallback = myCallback;
}
}
然后,在您的每个活动中,您将像这样实现新界面:
public class Main extends Activity implements MyCountDownTimer.MyCallback
{
private MyCountDownTimer myCountDownTimer;
@Override
public void callback(){
Log.e("Testing", "OK na");
}
@Override
public void onCreate(Bundle savedInstanceState){
myCountDownTimer = new MyCountDownTimer(5000, 1000);
myCountDownTimer.setMyCallback(this); //will use the callback method in this class which can be different for each activity
myCountDownTimer.start();
}
}
我有一个倒数计时器,我想在调用 class 时得到 return 值,这是我的 class CountdownTimer
public class CountDownTimerActivity extends CountDownTimer {
public boolean finish = false;
public CountDownTimerActivity(long startTime, long interval) {
super(startTime, interval);
}
@Override
public void onFinish()
{
finishTime(true);
}
@Override
public void onTick(long millisUntilFinished) {
finishTime(false);
Log.e("TESTINg","" + millisUntilFinished/1000);
}
public boolean finishTime(boolean finish) {
return finish;
}
}
这是我的来电倒计时
CountDownTimerActivity countdowntimer = new CountDownTimerActivity(5000,1000);
countdowntimer.start();
if(// I DONT KNOW WHAT WILL I PUT HERE)
{
Log.e("Testing", "OK na");
}
谁能帮帮我?谢谢
我认为它不起作用,因为您从未在代码中将变量 finish 设置为 true。您必须将 onFinish 方法中的代码更改为 finish = true 然后在 onTick 方法中放入一个逻辑来检查它是否已经完成然后调用 onFinish() 方法;
我认为您无法 return 来自 CountDownTimer 的值。 理想情况下,您应该启动计时器并在回调方法中实现您必须执行的操作 -
abstract void onFinish()
//Callback fired when the time is up.
abstract void onTick(long millisUntilFinished)
//Callback fired on regular interval.
实施示例 https://androidcookbook.com/Recipe.seam;jsessionid=DF53064E03C7505C4EBF727E56E0728E?recipeId=1205
CountDownTimer 是一个非常简单的 class,你不需要为它制作一个完整的 class,你可以在你的调用者 class 上创建它,这样你可以在完成时调用回调函数。
public class MyActivity extends Activity{
//Other methods and variables
CountDownTimer countdowntimer = new CountDownTimer(5000,1000){
@Override
public void onFinish() {
//Call the callback from your activity
}
@Override
public void onTick(long millisUntilFinished) {
Log.e("TESTINg","" + millisUntilFinished/1000);
}
};
}
如果由于某种原因你必须在不同的 class 中创建它,那么在那个 class 中你必须创建一个接口,你的 activity 必须在你的完成方法调用中实现接口侦听器的方法。
像片段一样:
我想你想要完成的是定时器到期时的回调?如果是这样,你必须自己考虑定时器 运行 ,然后在完成时调用另一个方法。例如:
public class Main extends Activity
{
private MyCountDownTimer myCountDownTimer;
@Override
public void onCreate(Bundle savedInstanceState){
myCountDownTimer = new MyCountDownTimer(5000, 1000);
myCountDownTimer.start();
}
public void finished(){
Log.e("Testing", "OK na");
}
public class MyCountDownTimer extends CountDownTimer {
public MyCountDownTimer(long startTime, long interval) {
super(startTime, interval);
}
@Override
public void onFinish() {
finished();
}
@Override
public void onTick(long millisUntilFinished) {
Log.e("TESTINg","" + millisUntilFinished/1000);
}
}
}
查看此 link 了解更多 details/example: https://androidcookbook.com/Recipe.seam;?recipeId=1205
编辑以制作可用于其他活动的通用 class,我会做这样的事情。
创建一个 MyCountDownTimer
class 在它自己的文件中看起来像这样:
public class MyCountDownTimer extends CountDownTimer {
private MyCallback myCallback;
public MyCountDownTimer(long startTime, long interval) {
super(startTime, interval);
}
public Interface MyCallBack{
void callback();
}
@Override
public void onFinish() {
myCallback.callback();
}
@Override
public void onTick(long millisUntilFinished) {
Log.e("TESTINg","" + millisUntilFinished/1000);
}
public void setMyCallback(MyCallback myCallback){
this.myCallback = myCallback;
}
}
然后,在您的每个活动中,您将像这样实现新界面:
public class Main extends Activity implements MyCountDownTimer.MyCallback
{
private MyCountDownTimer myCountDownTimer;
@Override
public void callback(){
Log.e("Testing", "OK na");
}
@Override
public void onCreate(Bundle savedInstanceState){
myCountDownTimer = new MyCountDownTimer(5000, 1000);
myCountDownTimer.setMyCallback(this); //will use the callback method in this class which can be different for each activity
myCountDownTimer.start();
}
}