有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java安卓:在类w/o视图中调用onCreate

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

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

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


共 (1) 个答案

  1. # 1 楼答案

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

    相反,您只需要一个适当的上下文,在这里您需要获取SharedPref。这可以是您的活动或服务,也可以是简单的其他类,它们将充当首选项的包装器,并实现您发布的一些接口

    所以,如果您想创建这样一个包装器,也许,更优雅的解决方案,而不是从活动继承一些实际上不是活动的东西,将是创建一个构造函数接受上下文的类

    此外,这个类甚至可以是单例,一旦应用程序启动,它就可以使用上下文进行初始化。这可以通过应用程序的一个活动来完成,也可以从不常使用的功能中获益,比如android实例。应用程序。应用 在AndroidManifest中为应用程序提供类名。如下所示的xml:

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

    在此之后,通过扩展android在相应的包中创建YourApp类。应用程序。应用此类可能只包含初始化singleton preferences包装器所需的代码,上下文如下:

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