当我按住按钮时,我已经创建了一个启动计数器的应用程序,并在我释放按钮后立即停止计数,然后在我再次触摸它时再次启动...(该应用程序可以查看多长时间我可以使用的时间,触摸按钮。)
无论如何,我已经设法保存了计数器的数据,所以当我杀死应用程序或按下"后退按钮"时,计数器的数据会保存。但是只要再次点击按钮,它就会重新启动!我无法找到解决此问题的方法。我认为它必须做一些事情:
chromo.setBase(SystemClock.elapsedRealtime()+time)
;
(发现在" ACTION_DOWN")顺便提一下,我使用天文台作为我的计数器。请帮帮我!
这是我的代码:
public class MainActivity extends ActionBarActivity {
Button button1;
Chronometer chromo;
protected long time = 0;
private SharedPreferences prefs;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button1=(Button)findViewById(R.id.button1);
chromo=(Chronometer)findViewById(R.id.chromo);
prefs = getSharedPreferences("prefs", Context.MODE_PRIVATE);
long savedValue = prefs.getLong("my_chrono", 0);
if(savedValue == 0)
chromo.setBase(SystemClock.elapsedRealtime());
else
chromo.setBase(SystemClock.elapsedRealtime() + savedValue);
button1.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
if(event.getAction() == MotionEvent.ACTION_DOWN){
chromo.setBase(SystemClock.elapsedRealtime()+time);
chromo.start();
}
else if( event.getAction() == MotionEvent.ACTION_UP){
time =chromo.getBase()-SystemClock.elapsedRealtime();
chromo.stop();
prefs.edit().putLong("my_chrono", time).apply();
}
return true;
}
});
}}