Android: вызов onCreate в классе без представления - PullRequest
0 голосов
/ 16 марта 2012

Мне интересно, как я могу вызвать onCreate в классе, который не имеет View в Android. Я создаю класс данных для sharedpreferences, но sharedpreferences нужно вызывать в 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;
}

любые советы очень полезны и высоко ценятся

1 Ответ

0 голосов
/ 16 марта 2012

SharedPreferences не требуется создавать в onCreate () (если я вас правильно понял).

Вместо этого вам просто нужен контекст в месте, где вам нужно получить sharedprefs.Это может быть ваша активность или служба или просто другой класс, который будет действовать как обертка вокруг предпочтений и реализовывать некоторый интерфейс, как вы опубликовали.

Так что, если вы хотите создать такую ​​обертку, возможно, более элегантное решениевместо того, чтобы наследовать от Activity что-то, что на самом деле не является действием, было бы создание класса с конструктором, принимающим Context.

Кроме того, этот класс может быть даже одноэлементным, который инициализируется с Context один раз при запуске приложения.Это можно сделать с помощью одного из действий приложения, или вы можете воспользоваться нечасто используемой способностью - иметь экземпляр android.app.Application.Укажите имя класса для вашего Приложения в AndroidManifest.xml следующим образом:

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

После этого создайте класс YourApp в соответствующем пакете, расширив android.app.Application.Этот класс может содержать только необходимый код для инициализации синглтон-оболочки настроек с таким контекстом:

public class YourApp extends Application {

    public void onCreate() {
        SharedPrefsWrapper.initialize(this);
    }
}
...