2015-02-10 2 views
0

В классе Activity Я храню некоторые данные в Sharedpreference. Мой класс non Activity имеет getter и setter для чтения данных Sharedpreference. Я хочу использовать эти данные в другом классе Activity. Но я всегда получаю исключение Nullpointer.Как получить SharedPreference из класса неактивности для неактивности

Это фрагмент кода из моего класса Activity.

SharedPreferences prefs; 

prefs = getActivity().getSharedPreferences(KEY_NAME_FOR_PREF, 0); 
     SharedPreferences.Editor editor = prefs.edit(); 
editor.putString("name", name.getText().toString()); 
editor.commit(); 

Это моя первая не класс активности

private String name; 
private Context mContext; 

public PdfConsultantContacts(Context context){ 
    mContext = context; 
} 

public String getName() { 
    return name; 
} 
public void setName(String name) { 
    this.name = name; 
} 

И это мой второй класс не активность. Контекст mContext; PdfConsultantContacts contact = new PdfConsultantContacts (mContext);

void initContact() { 
SharedPreferences prefs =  mContext.getApplicationContext(). 
getSharedPreferences("app_prefs", 0); 
contact.setName(prefs.getString("name", null)); 
} 

Когда я пытаюсь contact.getName(); я получаю всегда исключение NullPointer, но я знаю, что SharedPreference сохраняются правильно.

+0

Значение по умолчанию равно null ... и откуда вы знаете, что предпочтение сохраняется? – Navdroid

+0

Попробуйте mContext.getSharedPreferences ("app_prefs", 0); –

+0

Можете ли вы сказать, где вы назвали initContact()? В классе активности или неактивности? – sUndeep

ответ

0
  1. Убедитесь, что «Код фрагмента» из вашей операции действительно выполнен, вы можете проверить его, распечатав несколько журналов.

  2. Убедитесь, что KEY_NAME_FOR_PREF равно "app_prefs".

2

Создайте класс с двумя статическими методами и используйте его во всем приложении для хранения и извлечения данных из SharedPreferences.

public class Utils {  
      public static void putStringInPreferences(Context context, String value, String key, String pKey) { 
       SharedPreferences sharedPreferences = context.getSharedPreferences(pKey, Context.MODE_PRIVATE); 
       SharedPreferences.Editor editor = sharedPreferences.edit(); 
       editor.putString(key, value); 
       editor.commit(); 
      } 

      public static String getStringFromPreferences(Context context,String defaultValue, String key, String pKey) { 
       SharedPreferences sharedPreferences = context.getSharedPreferences(pKey, Context.MODE_PRIVATE); 
       String temp = sharedPreferences.getString(key, defaultValue); 
       return temp; 
      } 
    } 
+0

Это хороший способ. Я также использую, как указано выше. – sUndeep

+0

Я получаю ту же ошибку, когда я использую ее следующим образом: testKlasse.getStringFromPreferences (mContext, null, "name", "app_prefs"); – Byakko

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