2014-12-05 4 views
0

Мне нужен доступ к PackageManager и SharedPreferences из плоскости 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 
} 

Что я делаю неправильно, как это работает? Было бы очень приятно, если бы кто-нибудь мог объяснить мою проблему простыми словами. Заранее спасибо :)

Update

У меня нет доступа к деятельностной контекста! Извините, забыли сказать это. Плоскость Java-класса вызывается из моего приложения appWidget. До того, как будет создан один из моих действий.

ответ

1

Если вы хотите SharedPreferences в классе бездействия, вы можете использовать для этого контекст.

Как:

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

Вам не нужно расширять PackageManager, осуществлять SharedPreferences и т.д.

Вы также можете получить доступ к PackageManager с помощью Context:

context.getPackageManager(); 

При создании объекта этот класс, yo должен был бы передать контекст как:

MyClass myClass = new MyClass(this); 

Надеюсь, это поможет.

+0

Здравствуйте, @MysticMagic, благодарю вас за ответ. Я знаю, что, извините, что я забыл сказать, что .. Но мой класс класса вызван из моего приложения appWidget. До того, как начнется одно из моих действий. Поэтому у меня нет контекста, кроме контекста appwidget. Вы понимаете мою проблему? :) – MMike

+0

или контекст приложения appWidget applicationcontext? потому что appwidget объявлен в манифесте под тегами ' ...'? – MMike

+0

Я не работал с виджетами приложения, но разве вы не можете использовать этот контекст? –

Смежные вопросы