2014-12-05 91 views
0

我需要從平面Java類(無活動)訪問PackageManager和SharedPreferences。擴展PackageManager實現SharedPreferences

我試圖延長類PackageManager和實現接口SharedPreferences類似以下內容:

public abstract class TestClass extends PackageManager implements SharedPreferences { 

public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    Do code here 

} 

是不是現在我不類像sharedPreferences? 現在我不需要創建類Shared Shared的新對象?可是等等。我正在實現一個接口而不是一個類?我真的可以創建一個接口的實例嗎?我不這麼認爲。我認爲整個界面故事對我來說是一個真正的大問號。

如何在普通類中獲得對SharedPreferences的訪問權限?

public abstract class TestClass extends PackageManager implements SharedPreferences { 

public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    this.getSharedPreferences(...); // Doesn't work 
} 

我在做什麼錯,它是如何工作的?如果有人能用簡單的語言解釋我的問題,那將非常好。感謝提前:)

更新

我沒有訪問活動上下文!對不起,忘了說。很久以前,我的appWidget調用了Java平面類,這是我創建一個活動之前的很長一段時間。

回答

1

如果您想在非活動類中使用SharedPreferences,則可以使用上下文。

像:

public class MyClass{ 
    public MyClass(Context context){ 
     SharedPreferences sPrefs = context.getSharedPreferences("MyPrefs", null); 
    } 
} 

你並不需要延長PackageManager,實現SharedPreferences

您也可以使用上下文訪問PackageManager

context.getPackageManager(); 

當您創建的對象這個類,你需要通過上下文,如:

MyClass myClass = new MyClass(this); 

希望這會有所幫助。

+0

你好@MysticMagic,謝謝你的回覆。我知道,對不起,我忘了說這些..但是,我的飛機課是從我的appWidget調用很長時間纔開始我的一個活動。因此,除了appwidget上下文,我沒有上下文。你明白我的問題嗎? :) – MMike 2014-12-05 10:31:17

+0

或者是appWidget applicationContext的上下文?因爲appwidget是在標籤' ...'下的清單中聲明的​​? – MMike 2014-12-05 10:34:33

+0

我沒有使用應用程序小部件,但不能使用該上下文嗎? – 2014-12-05 10:34:38