0

我已经使用本教程来保存会话。我仍然不明白如何从另一个活动中获取这些数据。

 public HashMap<String, String> getUserDetails(){
    HashMap<String, String> user = new HashMap<String, String>();
      user.put(KEY_FULLNAME, pref.getString(KEY_FULLNAME, null));        
      user.put(KEY_EMAIL, pref.getString(KEY_EMAIL, null));

    // return user
    return user;
}

我发现人们正在使用意图将其发送到此链接中的另一个活动。有没有一种简单的方法来获取数据,就像我从另一个活动中调用方法一样(导入类,然后为该类提供一个变量var,然后调用类似的方法var.theMethodFromClass())。


更新

public SessionManager(Context context){
    this._context = context;
    pref = _context.getSharedPreferences(PREF_NAME, PRIVATE_MODE);
    editor = pref.edit();
}

此函数在我的 SessionManager 类中,我如何直接使用它,而无需再次初始化所有变量,因为它们已经在活动中初始化以便使用。

SessionManager.class 的完整代码在第一个链接中

4

5 回答 5

1

将数据保存到呼叫活动中的首选项。

public void saveToPreferences(HashMap<String, String> user)
{
SharedPreferences pref = getSharedPreferences("PreferencesName", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
editor.putString(KEY_FULLNAME, user.get(KEY_FULLNAME));
editor.putString(KEY_EMAIL, user.get(KEY_EMAIL));
    editor.commit();
}

在您调用的活动中。使用此代码。首先初始化首选项,然后从中获取数据。

public HashMap<String, String> getUserDetails(){
SharedPreferences pref = getSharedPreferences("PreferencesName", Context.MODE_PRIVATE);
    HashMap<String, String> user = new HashMap<String, String>();
    user.put(KEY_FULLNAME, pref.getString(KEY_FULLNAME, null));        
    user.put(KEY_EMAIL, pref.getString(KEY_EMAIL, null));


    return user;
    }
于 2013-11-08T11:12:40.740 回答
1

你已经保存了你的数据,SharedPrefernces所以为什么你需要将它从一个发送Activity到另一个Activity..尝试在另一个活动中打开SharedPreference文件并随意使用它..

于 2013-11-08T11:01:51.430 回答
0

如果您想HashMap在应用程序重新启动后保存并使用它,请使用SharedPreferences. 它将保存HashMap在设备中。

如果您只需要将HashMapas 参数传递给另一个Activity,请使用Intent. 您通过Intent's 传递的所有内容都必须是可序列化的,以便在所有情况下都能正常工作。阅读:http: //developer.android.com/guide/components/intents-filters.html

于 2013-11-08T11:07:56.327 回答
-1

为什么要将 hashmap 传递给 Activity?这毫无意义。

从 hashmap/preference 中获取数据,并将其从 Activity A 传递到 Activity B。在活动之间传递数据时,请坚持使用原语。

于 2013-11-08T11:14:46.937 回答
-2

如果您的项目允许,只需将 HashMap设为静态,然后您可以通过调用Class.hashmapvar在项目的任何其他活动中检索它

于 2013-11-08T11:03:22.173 回答