我使用this tutorial来保存会话。我仍然不明白如何从另一个活动中获取此数据。
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;
}
我发现人们正在使用意图将其发送到另一个活动,例如link.是否有一种简单的方法来获取数据,就像我从另一个活动中调用方法一样(导入类,然后给出一个变量{该类的{1}},并调用类似var
的方法。
更新
var.theMethodFromClass()
这个函数在我的SessionManager类中,如何直接使用它,而不是再次初始化所有变量,因为它们已经在活动中初始化以便使用。
SessionManager.class的完整代码位于第一个链接
答案 0 :(得分:1)
您已将数据保存在SharedPrefernces
中,因此需要将其从Activity
发送到另一个Activity
。尝试打开SharedPreference
文件另一个活动并随意使用..
答案 1 :(得分: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;
}
答案 2 :(得分:0)
如果要保存HashMap
并在重新启动应用程序后使用它,请使用SharedPreferences
。它会将HashMap
保存在设备中。
如果您只需要将HashMap
参数传递给另一个Activity
,请使用Intent
。您通过Intent
的所有内容都必须是可序列化的,以便在所有情况下都能正常运行。阅读:http://developer.android.com/guide/components/intents-filters.html
答案 3 :(得分:-1)
为什么要将hashmap传递给Activity?这使 NO Sense。
从hashmap / preference中获取数据并将其从Activity A中的附加内容传递给Activity B.当涉及在活动之间传递数据时,坚持使用原语。
答案 4 :(得分:-2)
如果您的项目允许,只需将HashMap 静态,然后您可以通过调用 Class.hashmapvar
在项目的任何其他活动中检索它