я не могу работать, как использовать общие предпочтения в другом классе, который не является фрагментом или что-нибудьКакой контекст использовать с общими предпочтениями в другом классе?
Вот мой основной код деятельности:
public class MainActivity extends AppCompatActivity {
Backgrounds backs;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
backs = new Backgrounds(this);
bg = (LinearLayout) findViewById(R.id.background);
bg.setBackgroundColor(getResources().getColor(backs.getBackground()));
}
}
А вот мой класс обои:
public class Backgrounds {
Integer colors[] = {
R.color.red,
R.color.pink,
R.color.purple,
};
private context;
SharedPreferences sharedPref = context.getSharedPreferences("file", 0);
SharedPreferences.Editor editor = sharedPref.edit();
int i = sharedPref.getInt("background", -1);
public Backgrounds(Context context)
{
this.context = context
}
public int getBackground()
{
i++;
try{
editor.putInt("factIndex", i);
editor.commit();
return colors[i];
}catch (Exception e){
i = 0;
editor.putInt("factIndex", i);
editor.commit();
return colors[i];
}
}
}
Я пробовал это много способов. Я почти уверен, что это проблема с контекстной частью кода, когда я получаю эту ошибку:
Вызвано: java.lang.NullPointerException: попытка вызвать виртуальный метод 'android.content.SharedPreferences android.content.Context .getSharedPreferences (java.lang.String, int) 'на ссылке нулевого объекта
Я также пробовал его с помощью context.getApplicationContext(), но ошибка была аналогичной. Я подумал, что это может быть потому, что мне нужно было переместить assinging объекта Backs в onCreate(), но это все еще не работает. Я очистил проект и синхронизирул файлы с помощью градиента, но программа все равно вылетает до загрузки. Код отлично работает при удалении любого материала SharedPrefrences.
В точке вы назначаете 'sharedPref',' 'context' является null'. Переместите назначение 'sharedPref' и' editor' в конструктор – Bene