2017-01-10 5 views
0

Я хочу использовать общие настройки в Meghdar.java Это мой код, но он не работает.Как использовать Общие предпочтения в моем классе

public class Meghdar { 

private final Context context; 
SharedPreferences sp; 
String Text; 

public Meghdar(Context context) { 
    super(); 
    this.context = context; 
    sp = context.getApplicationContext().getSharedPreferences("AppPreferences", Activity.MODE_PRIVATE); 

    Text = sp.getString ("text",null); 
}} 
+0

зачем вам контекст приложения для этого. –

+0

как вы получаете контекст в этом классе, здесь проблема. где вы вызываете этот конструктор класса? –

+0

Как контекст играет здесь роль? –

ответ

0

Изменение нравится это:

sp = context.getSharedPreferences("AppPreferences", Context.MODE_PRIVATE); 
0

Изменить его к этому:

public class Meghdar { 

    SharedPreferences sp; 
    String text; 

    public Meghdar(Context context) { 
     super(); 
     sp = context.getSharedPreferences("AppPreferences", Context.MODE_PRIVATE); 

     text = sp.getString("text", ""); 
    } 
} 
+0

Используйте 'Context.MODE_PRIVATE' вместо' context.MODE_PRIVATE'. потому что это статическое поле, поэтому вам нужно получить к нему доступ через ссылку на класс. –

0

просто удалить getApplicationContext()

контекст для getActivity и getApplicationContext.

Вы не должны использовать их оба одновременно.

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);

в вашем коде должно быть, как это

sp = context.getSharedPreferences("AppPreferences",context.MODE_PRIVATE);

0

пример для трех методов:

public static SharedPreferences getPreferences(Context c){ 
    if (settings == null) { 
     settings = PreferenceManager.getDefaultSharedPreferences(c.getApplicationContext()); 
    } 
    return settings; 
} 
public static void save(int ndx, String val) { 
    SharedPreferences st = settings; 
    SharedPreferences.Editor editor = st.edit(); 
    editor.putString(CTBASE + ndx, val); 
    editor.commit(); 

} 
public static String get(int ndx) { 
    return settings.getString(CTBASE + ndx, DEFVAL); 
} 
0

спасибо я изменить его, но он не работает , я также использовать этот код в моем MainActivity.java может быть ошибка здесь смотрите его (это сила стоп)

String a = editTextM.getText().toString(); 
       sharedPreferences = getApplicationContext().getSharedPreferences ("userB", 0); 
       editor = sharedPreferences.edit(); 
       editor.putString ("text", a); 
       editor.commit(); 
       Toast.makeText (getApplicationContext(), "با موفقیت ذخیره شد.", Toast.LENGTH_LONG).show(); 
       finish(); 
       startActivity (getIntent()); 
+0

никто не может мне помочь? – REZA

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