【问题标题】:android: calling onCreate in class w/o viewandroid:在没有视图的类中调用 onCreate
【发布时间】:2012-03-15 22:48:38
【问题描述】:

我想知道如何在 android 中没有 View 的类中调用 onCreate。 我正在为 sharedpreferences 创建一个数据类,但需要在 onCreate 中调用 sharedpreferences。 我的班级看起来有点像这样:

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;
}

任何提示都是很大的帮助,非常感谢

【问题讨论】:

    标签: java android android-activity sharedpreferences oncreate


    【解决方案1】:

    SharedPreferences 不需要在 onCreate() 中创建(如果我理解正确的话)。

    相反,您只需要一个上下文来获取共享首选项。这可能是您的 Activity 或 Service 或只是其他类,它们将充当首选项的包装器并实现您发布的某些接口。

    因此,如果您想创建这样的包装器,也许更优雅的解决方案是创建一个带有构造函数的类,而不是从 Activity 继承实际上不是 Activity 的东西。

    此外,这个类甚至可以是单例的,它在应用程序启动时使用 Context 初始化一次。这可以通过应用程序的一项活动来完成,或者您可以从不常用的功能中受益 - 拥有一个 android.app.Application 的实例。 在 AndroidManifest.xml 中为您的应用程序提供一个类名,如下所示:

    <application android:label="@string/app_name" android:name="com.yourpackage.YourApp" >
    

    之后通过扩展android.app.Application在相应的包中创建YourApp类。这个类可能只包含初始化单例首选项包装器所需的代码,其上下文如下:

    public class YourApp extends Application {
    
        public void onCreate() {
            SharedPrefsWrapper.initialize(this);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多