2014-12-05 43 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