【问题标题】:Extend PackageManager Implementing SharedPreferences扩展 PackageManager 实现 SharedPreferences
【发布时间】:2014-12-05 18:40:55
【问题描述】:

我需要从平面 Java 类(无活动)访问 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 吗? 现在我不需要创建类 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
}

我做错了什么,它是如何真正起作用的?如果有人能用简单的话解释我的问题,那就太好了。在此先感谢:)

更新

我无权访问活动上下文!对不起,忘了说。平面 Java 类是从我的 appWidget 调用的,在我的一个活动被创建之前很久。

【问题讨论】:

    标签: android interface sharedpreferences


    【解决方案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);
    

    希望这会有所帮助。

    【讨论】:

    • 您好@MysticMagic,感谢您的回复。我知道,对不起,我忘了说.. 但是,我的飞机课是从我的 appWidget 调用的 很久之前我的一项活动开始了。因此,除了 appwidget 上下文之外,我没有上下文。你明白我的问题吗? :)
    • 或者appWidget的上下文是applicationcontext?因为 appwidget 是在清单中的标签 <application>...</application> 下声明的?
    • 我没有使用应用小部件,但你不能使用那个上下文吗?
    • 好的,试过了。我可以从 appwidget 上下文中获取 applicationcontext。现在我可以在我的 appwidget 类中创建一个匿名用户。但我想从我的 appwidget 将上下文发送到一个非匿名类......但我认为你是错误的人来问这样的问题。但谢谢你的时间! :) 我会给你投票
    猜你喜欢
    • 2011-06-30
    • 2018-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-15
    • 2012-06-06
    • 2018-04-29
    • 2014-04-18
    相关资源
    最近更新 更多