我想知道如何在android中没有View的类中调用onCreate。 我正在为共享偏好创建数据类,但需要在onCreate中调用共享偏好。 我的班级看起来有点像这样:
public class getData extends PreferenceActivity {
String username;
String password;
String auth_key;
String PREF_FILE = "prefs";
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
//SharedPreferences settings = getSharedPreferences(PREF_FILE, MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
username = settings.getString("username",null);
password = settings.getString("password",null);
auth_key = settings.getString("auth_key",null);
}
public String getSHA1(){
return password;
}
public String getUsername(){
return username;
}
public String getAuth_key(){
return auth_key;
}
任何提示都是一个很好的帮助,并且非常感谢
答案 0 :(得分:0)
不需要在onCreate()中创建SharedPreferences(如果我理解正确的话)。
相反,您只需要一个需要获取sharedprefs的上下文。这可能是您的活动或服务,或者只是其他类,它们可以充当首选项的包装器并实现您发布的某些界面。
因此,如果你想创建这样一个包装器,也许更优雅的解决方案而不是从Activity继承一些实际上不是活动的东西,那就是用构造函数创建一个带有Context的类。
此外,这个类甚至可以是单例,它在应用程序启动时用Context初始化一次。这可以通过app的其中一个活动来完成,或者你可以从不经常使用的能力中获益 - 拥有android.app.Application的一个实例。 在AndroidManifest.xml中为您的应用程序提供类名称,如下所示:
<application android:label="@string/app_name" android:name="com.yourpackage.YourApp" >
之后通过扩展android.app.Application在相应的包中创建YourApp类。此类可能只包含用于使用如下上下文初始化singleton首选项包装器所需的代码:
public class YourApp extends Application {
public void onCreate() {
SharedPrefsWrapper.initialize(this);
}
}