【发布时间】:2013-12-15 18:14:31
【问题描述】:
问候,
我创建了计时器来显示特定时间的吐司。打开开关键后定时器开始工作,关闭开关键后定时器将被取消。我正在使用 SharedPrefrences 来保存切换视图的状态。一切正常,但是一旦我回到上一个活动并再次打开活动,然后尝试通过关闭开关键来取消计时器,我就会收到强制关闭消息。那么,您对解决这个问题有什么建议呢?
代码:
import java.util.Timer;
import java.util.TimerTask;
import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.util.Log;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.Switch;
import android.widget.Toast;
public class AutoReminder extends Activity {
TimerTask tt;
Timer t;
Switch mySwitch;
SharedPreferences appPrefs;
String TAG;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_auto_reminder);
mySwitch = (Switch) findViewById(R.id.switch1);
appPrefs = getSharedPreferences("ishaqdev.app.hasanat",MODE_PRIVATE);
Boolean setSwitch = appPrefs.getBoolean("switchValue", false);
if (setSwitch == false){
mySwitch.setChecked(false);
}else{
mySwitch.setChecked(true);
}
mySwitch.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// TODO Auto-generated method stub
if (isChecked) {
SharedPreferences.Editor prefsEditor = appPrefs.edit();
prefsEditor.putBoolean("switchValue", true);
prefsEditor.commit();
tt = new TimerTask()
{
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(), "Hello Timer !!", Toast.LENGTH_SHORT).show();
}
});
}
};
t = new Timer();
t.schedule(tt,0,5000);
} else {
SharedPreferences.Editor prefsEditor = appPrefs.edit();
prefsEditor.putBoolean("switchValue", false);
prefsEditor.commit();
Log.v(TAG, "After SP");
t.cancel();
Log.v(TAG, "Final Step");
}
}
});
}
}
【问题讨论】: