我想在重新加载活动时保留数据或字符串,而不使用共享prefrences或sqllite数据库。
目前我已经尝试过OnsavedInstancestate或OnRestoreInstancestate方法,但只有在方向更改不是为了重新加载活动时它才会起作用...
请建议我克服这一点。
此致 普里亚
答案 0 :(得分:1)
您可以在此处使用singleTon类机制。
onCreate()
onRestart()
中说出来,就可以从课堂上获取数据。要了解有关singleTon课程的更多信息,请参阅this..
创建单例类
public class Singleton {
private static Singleton singleton = new Singleton();
/*
* A private Constructor prevents any other class from instantiating.
*/
public String valueToStore;
private Singleton() {
}
/* Static 'instance' method */
public static Singleton getInstance() {
return singleton;
}
public String getValueToStore() {
return valueToStore;
}
public void setValueToStore(String valueToStore) {
this.valueToStore = valueToStore;
}
}
在你的活动中。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Singleton singleton = Singleton.getInstance();
singleton.setValueToStore("Hai");
}
@Override
protected void onRestart() {
// TODO Auto-generated method stub
super.onRestart();
Singleton singleton = Singleton.getInstance();
Log.d("Value", singleton.getValueToStore());
}
答案 1 :(得分:1)
您可以尝试使用应用程序类将数据存储在将保留数据的全局单例中,然后您可以在需要时使用getter和setter方法从单例中加载和存储数据。
有关如何执行此操作,请参阅此类似问题:Using the Android Application class to persist data
答案 2 :(得分:0)
销毁活动时保存数据的最简单方法是使用
@Override
protected void onSaveInstanceState(Bundle outState) {
outState.putString("Test", "Test");
super.onSaveInstanceState(outState);
}
请注意,当用户仅在系统销毁活动或其他活动时才按下后退按钮时,不会调用此方法。