在重新加载活动时保留“数据或字符串”而不使用android中的共享pref和数据库?

时间:2014-03-04 10:22:26

标签: android sqlite android-activity sharedpreferences

我想在重新加载活动时保留数据或字符串,而不使用共享prefrences或sqllite数据库。

目前我已经尝试过OnsavedInstancestate或OnRestoreInstancestate方法,但只有在方向更改不是为了重新加载活动时它才会起作用...

请建议我克服这一点。

此致 普里亚

3 个答案:

答案 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);
}

请注意,当用户仅在系统销毁活动或其他活动时才按下后退按钮时,不会调用此方法。