2012-03-15 36 views
0

我不知道我怎麼能在這在Android的沒有視圖類調用的onCreate。 我創建一個數據類sharedpreferences,但sharedpreferences需要在OnCreate調用。 我的類看起來有點像這樣:安卓:調用的onCreate類W/O視圖

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上下文。這可能是您的活動或服務,或者簡單的其他類,它可以作爲您偏好的包裝並實現您發佈的某些界面。

所以,如果你想創建這樣的包裝,也許,更優雅的解決方案,而不是從活動的東西。它實際上不是一個活動是創建與構造以上下文類繼承。

此外,這個類甚至可以而它與應用程序啓動上下文初始化一次單。這可以通過應用程序的某個活動來完成,或者您可以從不常用的功能中獲益 - 擁有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); 
    } 
}