我很奇怪为什么这段代码不起作用。是因为构造函数吗?
import android.os.Bundle;
import android.view.Window;
import android.widget.TextView;
import android.content.Intent;
import android.app.Activity;
import java.util.Timer;
import java.util.TimerTask;
public class ClockMain extends Activity {
int Hours;
int Minutes;
int Seconds;
String TimeOfDayS;
TextView HoursMainV;
TextView MinutesMainV;
TextView SecondsMainV;
TextView TimeOfDayMainV;
Timer oneSecond;
public ClockMain(int Seconds) {
// TODO Auto-generated constructor stub
oneSecond = new Timer();
oneSecond.schedule(new SecondsTask(), Seconds * 1000);
}
class SecondsTask extends TimerTask {
public void run() {
new ClockMain(1);
++Seconds;
if(Seconds == 60){
++Minutes;
Seconds = 0;
if(Minutes == 60) {
++Hours;
Minutes = 0;
if(Hours == 12){
if(TimeOfDayS.equals("AM")) {
TimeOfDayS = "PM";
} else{
TimeOfDayS = "AM";
}
Hours= 0;
}
}
}
HoursMainV = (TextView) findViewById(R.id.HoursMainV);
HoursMainV.setText(""+Hours);
MinutesMainV = (TextView) findViewById(R.id.MinutesMainV);
MinutesMainV.setText(":"+Minutes);
SecondsMainV = (TextView) findViewById(R.id.SecondsMainV);
SecondsMainV.setText(":"+Seconds);
TimeOfDayMainV = (TextView) findViewById(R.id.TimeOfDayMainV);
TimeOfDayMainV.setText(" "+TimeOfDayS);
}
}
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
setContentView(R.layout.clock_main);
requestWindowFeature(Window.FEATURE_NO_TITLE);
Bundle extras = getIntent().getExtras();
if (extras == null) {
return;
}
int Hour = extras.getInt("HoursS");
Hour = Hours;
int Minute = extras.getInt("MinutesS");
Minute = Minutes;
int Second = extras.getInt("SecondsS");
Second = Seconds;
String TimeOfDaySs = extras.getString("TimeOfDayS");
TimeOfDaySs = TimeOfDayS;
HoursMainV = (TextView) findViewById(R.id.HoursMainV);
HoursMainV.setText(""+Hour);
MinutesMainV = (TextView) findViewById(R.id.MinutesMainV);
MinutesMainV.setText(":"+Minute);
SecondsMainV = (TextView) findViewById(R.id.SecondsMainV);
SecondsMainV.setText(":"+Second);
TimeOfDayMainV = (TextView) findViewById(R.id.TimeOfDayMainV);
TimeOfDayMainV.setText(" "+TimeOfDaySs);
new ClockMain(1);
}
}
是的,我确实更改了Manifest,我知道xml没有问题。当我添加公共Clock Main和SecondsTask类时,它停止运行。请帮忙。如果有一个更好的方法来做这个特定的android,我很想学习它,或者如果我错过了一些我也想知道的东西。
答案 0 :(得分:3)
而不是在构造函数中传递int seconds
,
您应该通过Intent
和onCreate()
的{{1}}传递它,然后您就可以开始并安排此Activity
的计时器。
Activity
可能会被视为onCreate()
的构造函数。
答案 1 :(得分:0)
我认为,问题在于你的SecondsTask run()方法中正在更新的视图。 TimerTask在一个单独的线程中运行。在android中,只有主线程可以更新UI。您正在从工作线程更新UI。因此,从此run方法中删除该UI更新任务。要更新UI,请使用Handlers或runOnUiThread方法... 我希望你能得到asnswer ....