2012-03-15 1 views
0

Мне интересно, как я могу вызвать onCreate в классе, который не имеет View в android. Я создаю класс данных для sharedpreferences, но sharedpreferences нужно вызывать в onCreate. мой класс будет выглядеть немного так:android: call onCreate in class w/o view

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

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

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

Так что, если вы хотите создать такую ​​оболочку, возможно, более элегантное решение вместо наследования от Activity, то на самом деле это не будет создание класса с конструктором, принимающим 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); 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^