Есть 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()
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
С чем может быть связано нежелание g++ компилировать OpenMP программу с использованной опцией shedule(dynamic)?
Нужен массив double-овКоличество элементов определяется только во время выполнения программы - поэтому в стеке создать не получится