我有一个TextView,显示活动A中的倒数计时器。倒数计时器的功能在B类。 在活动A:
TextView tvTime = (TextView) findViewById(R.id.tv_time);
B a = new B(tvTime);
a.startTimer(20000);
和B组:
public B(TextView tvTime)
{
this.tvTime = tvTime;
}
//倒数计时器
public void startTimer(int t) {
Log.d("Timer Value outside cdt", ""+t);
timer = new CountDownTimer(t, 1000) {
public void onTick(long millisUntilFinished) {
tvTime.setText(""+millisUntilFinished
/ 1000;);
Log.d("Timer Value outside cdt", ""+millisUntilFinished
/ 1000;);
}
public void onFinish() {
tvTime.setText("000");
}
};
timer.start();
}
并且它的工作正常,但是当我试图通过使用以下代码将其无法正常工作来获取tvTime的值以将其保存在SharedPref中时
public void saveGame(){
time = tvTime.getText().toString();
spEdit.putString(SAVED_TIME, time);
spEdit.commit();
}
编辑:
通过添加2个调试语句,我发现问题不在于保存值,但是当我在获取存储值时调用startTimer()时出现问题
public void getGame(){
startTimer(Integer.valueOf(sp.getString(SAVED_TIME, "0000")));
}
调用此函数后,我可以看到
的结果 Log.d("Timer Value outside cdt", ""+t);
但是第二个陈述没有结果
Log.d("Timer Value outside cdt", ""+millisUntilFinished
/ 1000;);
答案 0 :(得分:1)
将值存储在SP中:
time = tvTime.getText().toString();
Editor editor = sharedpreferences.edit();
editor.putString("NAME", time );
editor.commit();
从SP中检索数据:
SharedPreferences prefs = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE);
String name= prefs.getString("NAME", null);
答案 1 :(得分:0)
确保您的textview's object is accessible in the particular method
,它可能不在您的方法范围内。如果可能的话,在class level
声明你的textview对象,这样所有类的方法都可以使用
public class yourclass
{
TextView tvTime;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//--- text view---
TextView txtView = (TextView) findViewById(R.id.text_id);
}
public void saveGame(){
time = tvTime.getText().toString();//now you can use your textview here
spEdit.putString(SAVED_TIME, time);
spEdit.commit();
}
}