Java 从倒计时返回值
我需要从倒计时中返回值,以便更新textView。我不知道如何才能做到这一点,我已经添加了一条评论,其中我尝试添加回报,但没有运气Java 从倒计时返回值,java,android,return,countdowntimer,Java,Android,Return,Countdowntimer,我需要从倒计时中返回值,以便更新textView。我不知道如何才能做到这一点,我已经添加了一条评论,其中我尝试添加回报,但没有运气 public class BrewTimer extends Activity{ public String secsRemain = "not set"; @Override protected void onCreate(Bundle savedInstanceState) { supe
public class BrewTimer extends Activity{
public String secsRemain = "not set";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
System.out.println("Timer Created, we're in the onCreate Method.");
}
public void startBrewTimer(long remaningMillis) {
// Start the Brew Timer
System.out.println("Timer object fired!");
new CountDownTimer(remaningMillis, 1000) {
public void onTick(long millisUntilFinished) {
secsRemain = "seconds remaining: " + millisUntilFinished / 1000;
System.out.println(secsRemain);
return secsRemain; // <-- This is what I want to do
}
public void onFinish() {
System.out.println("Timer Finished!!!");
}
}.start();
}
public void stopBrewTimer() {
//Stop the Brew Timer
}
}
公共类BrewTimer扩展活动{
公共字符串secsRemain=“未设置”;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
println(“计时器已创建,我们在onCreate方法中。”);
}
公共无效启动计时器(长剩余毫秒){
//启动Brew计时器
System.out.println(“计时器对象已触发!”);
新的倒计时器(剩余毫秒,1000){
公共void onTick(长毫秒未完成){
secsRemain=“剩余秒数:”+millisuntillfinished/1000;
System.out.println(secsRemain);
返回secsRemain;//
我需要从倒计时返回值,以便更新
文本视图
不需要这样做。它在ui线程上运行。您可以在onTick
本身中更新textview
例如:
public class MainActivity extends Activity {
TextView tv;
public String secsRemain = "not set";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView) findViewById(R.id.textView1);
startBrewTimer(200000);
}
private void startBrewTimer(long remaningMillis){
CountDownTimer counter = CountDownTimer(remaningMillis, 1000){
public void onTick(long millisUntilDone){
secsRemain = "seconds remaining: " + millisUntilFinished / 1000;
tv.setText(secsRemain);
}
public void onFinish() {
tv.setText("DONE!");
}
}.start();
}
}
您可以通过广播接收器获取值……如下所示,
首先创建自己的IntentFilter
as
Intent intentFilter=new IntentFilter();
intentFilter.addAction("YOUR_INTENT_FILTER");
然后创建内部类BroadcastReceiver
as
private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
/** Receives the broadcast that has been fired */
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction()=="YOUR_INTENT_FILTER"){
//HERE YOU WILL GET VALUES FROM BROADCAST THROUGH INTENT EDIT YOUR TEXTVIEW///////////
String receivedValue=intent.getStringExtra("KEY");
}
}
};
registerReceiver(broadcastReceiver, intentFilter);
unregisterReceiver(broadcastReceiver);
现在在onResume()
中将广播接收器注册为
private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
/** Receives the broadcast that has been fired */
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction()=="YOUR_INTENT_FILTER"){
//HERE YOU WILL GET VALUES FROM BROADCAST THROUGH INTENT EDIT YOUR TEXTVIEW///////////
String receivedValue=intent.getStringExtra("KEY");
}
}
};
registerReceiver(broadcastReceiver, intentFilter);
unregisterReceiver(broadcastReceiver);
最后在ondestory()
as中注销BroadcastReceiver
private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
/** Receives the broadcast that has been fired */
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction()=="YOUR_INTENT_FILTER"){
//HERE YOU WILL GET VALUES FROM BROADCAST THROUGH INTENT EDIT YOUR TEXTVIEW///////////
String receivedValue=intent.getStringExtra("KEY");
}
}
};
registerReceiver(broadcastReceiver, intentFilter);
unregisterReceiver(broadcastReceiver);
现在最重要的部分…你需要从任何你需要发送值的地方发射广播…也可以这样做
Intent i=new Intent();
i.setAction("YOUR_INTENT_FILTER");
i.putExtra("KEY", "YOUR_VALUE");
sendBroadcast(i);
如果您觉得满意,请不要忘记接受我的回答……干杯:)因为返回类型是void
,public void onTick(long millisuntilfilled){
你不能返回
任何东西。但是请看Raghundan的答案。谢谢你,我把计时器放在它自己的类中,认为我可以创建一个对象以及它的各种方法。你所描述的倒计时计时器的典型使用方式是什么?我可以将倒计时计时器代码放在活动中并使用代码您已经提供了,而且它可以工作,但是您认为将其作为对象或单例会更好,以获得更多的多功能性吗?@Mint\u Sauce上述方法可以工作。您不需要单例来实现这一点。