基本上我想设置一个类,让getter和setter到设备来存储和检索数据,以及其他类来访问它。我设法让共享偏好在一个类中工作但是在两个类中遇到问题(我熟悉Java但不熟悉Android,我读过某个地方我不应该使用Activity但是静态,并且无法使其工作)。无论如何这里是getter / setter类。
public class Storage extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
}
final SharedPreferences prefs = this.getSharedPreferences(
"uk.co.kenreid.examplestory", Context.MODE_PRIVATE);
String nameKey = "uk.co.kenreid.examplestory.name";
我在另一个类中使用这些代码访问它(final用作变量“storage”在onclicklistener中使用):
final Storage storage = new Storage();
storage.storeItem("name", name);
System.out.println(storage.getString("name"));
答案 0 :(得分:1)
试试这个:
SharedPreferences prefs = this.getSharedPreferences("uk.co.kenreid.examplestory", Context.MODE_MULTI_PROCESS);
答案 1 :(得分:1)
以共享偏好存储内容:
SharedPreferences prefs = getSharedPreferences("TOT", Context.MODE_PRIVATE);
Editor ed = prefs.edit();
ed.putString(key, value);
ed.commit();
在您的情况下,您可以在onCreate方法中使用上述代码。
从共享偏好中获取内容:
SharedPreferences prefs = getSharedPreferences("TOT", Context.MODE_PRIVATE);
prefs.getString(key, null);
答案 2 :(得分:1)
我认为您的问题是将SharedPreferences
初始化为Activity
?
假设这是您的问题,您可以通过Context
类的构造函数传递Storage
以进行初始化。
例如
SharedPreferences prefs;
public Storage(Context aContext){
prefs = aContext.getSharedPreferences("uk.co.kenreid.examplestory",
Context.MODE_PRIVATE);
}
然后通过您的原始访问方法访问。可能最好将Application Contex
t而不是Activity Context
传递给构造函数,因此在创建Storage类时,请在Activity中调用它:
Storage myStorage = new Storage(getApplicationContext());
创建 Singleton 类也许是明智之举,允许您使用相同的Storage实例。网络上有很多关于Singletons的Java教程。
答案 3 :(得分:0)
试试这样:
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(getActivity());
mVariable = sharedPref.getBoolean(SettingsActivity.KEY_TO_VARIABLE, false);
答案 4 :(得分:0)
这里第一个参数是存储数据的共享首选项的名称。因此,您需要使用每个类中的相同名称来访问相同的共享首选项。
答案 5 :(得分:0)
您可以使用单独的类来处理所有偏好
public class PreferenceManager {
public static void setLogInSuceess(boolean login, Context context) {
SharedPreferences preferences;
preferences = context.getSharedPreferences("settings", Context.MODE_PRIVATE);
preferences.edit().putBoolean("LOGIN", login).commit();
}
public static boolean getLogInSuceess(Context context){
SharedPreferences preferences;
preferences = context.getSharedPreferences("settings", Context.MODE_PRIVATE);
boolean login = preferences.getBoolean("LOGIN", false);
return login;
}
}
随时随地使用
PreferenceManager.setLogInSuceess(true / false,context); boolean _login = PreferenceManager.getLogInSuceess(context);
答案 6 :(得分:-1)
试试这个:
public class Storage extends Application
应用程序是一个用于共享活动数据的类