我创建了一个CountDown Timer,我使用了这段代码。 (首先抱歉我的英语不好)。我使用SharedPreferences来节省我去另一个活动并返回的时间,但是当我返回到倒计时活动时,它会重新启动计时器而不保存任何内容。你能帮我吗?使用的代码就是这样!
public class Main8Activity extends Activity implements OnClickListener {
Myapp application ;
String eleg="";
CountDownTimer start1;
Button contador;
long cont=0,q=0;
private SimpleDateFormat timeFormat;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.fragment8_main);
timeFormat = new SimpleDateFormat("HH:mm:ss");
Button seg= (Button) findViewById(R.id.button1);//seguir
seg.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//el a
temporizador(q);
}
});
Button par= (Button) findViewById(R.id.button2);//seguir
par.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//el a
parar();
}
});
//te
//temporizador(final long secondadd);
temporizador(600000);
@Override
public void onBackPressed() {
super.onBackPressed();
this.finish();
}
public void temporizador(final long secondadd){
start1 = new CountDownTimer(secondadd, 1000) {
//se ejecuta al terminar el tiempo,cuando llega a 0
@Override
public void onFinish() {
//contador.setText(String.valueOf(00+":"+00));
contador.setText("Time Elapsed: " + timeFormat.format(secondadd));
Toast.makeText(Main8Activity.this, "Se terminó el tiempo", Toast.LENGTH_SHORT).show();
cont=0;
}
//se ejecuta por cada segundo pasado
@Override
public void onTick(long millisUntilFinished) {
contador.setText("Time Elapsed: " + timeFormat.format(secondadd));
contador.setText(String.format(timeFormat.format(millisUntilFinished)));
// contador.setText( String.format("%02d:%02d:%02d", millisUntilFinished / 3600,(millisUntilFinished % 3600) / 60, (millisUntilFinished % 60)));
cont=millisUntilFinished;
q= millisUntilFinished;
}
}.start();
}
//metodo parar el cual detiene el tiempo del contador
public void parar(){
start1.cancel();
}
//metodo ondestroy
@Override
protected void onDestroy() {
super.onDestroy();
parar();
}
//metodo onstop
@Override
protected void onStop() {
super.onStop();
//se rescata el tiempo en el que se quedo
// int tiempokedo=Integer.parseInt((contador.getText()+"000").toString());
//el tiempo se guarda en un preferences
SharedPreferences preferences=PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
Editor editor=preferences.edit();
editor.putLong("stiem",cont);
editor.commit();
//se detiene el temporizador(tiempo)
parar();
}
//metodo onrestart
protected void onRestart() {
super.onRestart();
//se rescata de preferencias el valor del tiempo el cual se quedo
SharedPreferences preferences=PreferenceManager.getDefaultSharedPreferences(this);
int tr=preferences.getInt("stiem",0 );//re
//se envia al temporizador con el parametro rescatado para que siga el tiempo
temporizador(tr);
}
}
答案 0 :(得分:0)
你是否甚至能够编译知道你试图将Long存储为没有强制转换的int等?
在onRestart()
中调用getLong(String key, long defValue)
而不是getInt(...)