Есть MainActivity, в нём есть 2 метода.
Первый сохраняет строку:
public void saveInfo(String lvl){
sPref = getPreferences(MODE_PRIVATE);
SharedPreferences.Editor editor = sPref.edit();
editor.putString("lvl", lvl);
editor.commit();
}
Второй выгружает строку:
public String getInfo(){
sPref = getPreferences(MODE_PRIVATE);
String lvl = sPref.getString("lvl", "");
return lvl;
}
Внутри MainActivity всё работает отлично, но как только я пытаюсь вызвать эти методы из другого класса, приложение крашится.
Что я делаю не так?
Как я вызываю метод из другого класса:
MainActivity mainActivity = new MainActivity();
mainActivity.saveInfo("2");
Я хочу сохранять данные в SharedPreferences из других классов, но не могу.
Управлять Activity и фрагментами должна операционная система. Создавать Activity нужно средствами SDK, к примеру, с помощью startActivityForResult.
Я хочу сохранять данные в SharedPreferences из других классов, но не могу.
Для использования SharedPreferences вам нужен Context.
Можно сделать методы static:
public static void saveInfo(Context ctx, String lvl){
SharedPreferences sPref = context.getSharedPreferences(MODE_PRIVATE);
SharedPreferences.Editor editor = sPref.edit();
editor.putString("lvl", lvl);
editor.commit();
}
Второй выгружает строку:
public static String getInfo(Context ctx){
SharedPreferences sPref = context.getSharedPreferences(MODE_PRIVATE);
String lvl = sPref.getString("lvl", "");
return lvl;
}
И вызывать тогда так:
MainActivity.saveInfo(yourContext, "2");
Как вариант - создайте статическую переменную на объект приложения:
public class App extends Application {
private static App _app;
public static App getApp()
{
return _app;
}
public void onCreate() {
super.onCreate();
_app = this;
}
public void saveInfo(String lvl){
sPref = getSharedPreferences("myPrefs", MODE_PRIVATE);
SharedPreferences.Editor editor = sPref.edit();
editor.putString("lvl", lvl);
editor.commit();
}
public String getInfo(){
sPref = getSharedPreferences("myPrefs", MODE_PRIVATE);
String lvl = sPref.getString("lvl", "");
return lvl;
}
}
Далее можно вызывать в коде:
App.getApp().getInfo()
Сборка персонального компьютера от Artline: умный выбор для современных пользователей