我需要从平面Java类(无活动)访问PackageManager和SharedPreferences。
我尝试扩展Class 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吗? 现在我不需要创建类SharedPreferences的新对象?可是等等。我正在实现一个接口而不是一个类?我真的可以创建一个接口实例吗?我不这么认为。我认为整个界面故事对我来说是一个真正的大问题。
如何在普通班级中访问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类。
答案 0 :(得分:1)
如果您希望在非活动类中使用SharedPreferences
,则可以使用Context。
像:
public class MyClass{
public MyClass(Context context){
SharedPreferences sPrefs = context.getSharedPreferences("MyPrefs", null);
}
}
您不需要延长PackageManager
,实施SharedPreferences
等。
您还可以使用上下文访问PackageManager
:
context.getPackageManager();
当你创建这个类的对象时,你需要传递像:
这样的上下文MyClass myClass = new MyClass(this);
希望这有帮助。