Intereting Posts
Хорошие инструменты для разработки графического интерфейса в Android? Xml to json в android Android загружает фотографии на сервер наиболее эффективным способом Скрыть мягкую клавиатуру при нажатии Как получить доступ к ListView из адаптера Как оставаться в позиции прокрутки в RecyclerView после добавления элементов в свой первый индекс и вызывать notifydatasetchange Ошибка развертывания приложения Xamarin android в Visual Studio 2015 Объект интерфейса не работает при вызове из другого фрагмента Как добавить проект библиотеки в Android Studio и использовать его? (Некоторые из них не вступили в силу) Ffmpeg для android (с помощью учебника: «ffmpeg и Android.mk») Ошибка разрешения ярлыка на рабочем столе Android Android: сканирование штрих-кода zxing успешно, но не возвращается из активности Добавить (открыть / закрыть) кнопку для активности (открытия / закрытия) навигационного ящика Android целых чисел с одинаковым значением, не соответствующим Android: Эффективно прокручивается содержимое холста?

Как обеспечить, чтобы выбранное пользователем изображение не изменилось после перезагрузки Android?

У меня есть простой виджет наклейки, который позволяет пользователю выбирать один из наклеек при размещении виджета. Моя проблема в том, что после перезапуска устройства стикер возвращается к стандартным. Как я могу убедиться, что выбранная пользователем наклейка остается вне зависимости от того, перезагрузилось ли устройство или нет? Пример или толчок в правильном направлении был бы очень полезен. Я не ищу никого, кто мог бы сделать это для меня, просто чтобы узнать, как это сделать. Спасибо.

Код EDIT в комплекте

Я не уверен, но я думаю, что все это неправильно. Я не знаю, как включить SharedPreferences так, как у меня сейчас. Может ли кто-нибудь дать мне пример того, как я должен заниматься этим, по крайней мере, одним из изображений, которые я использую, пожалуйста?

public class SpraycanConfig extends Activity { int xawID; AppWidgetManager xawm; Context xc; EditText xinfo; //EasyTracker easyTracker; protected void onCreate(Bundle paramBundle) { super.onCreate(paramBundle); Crashlytics.start(this); setContentView(R.layout.scconfiglayout); this.xc = this; Bundle localBundle = getIntent().getExtras(); if (localBundle != null) { this.xawID = localBundle.getInt("appWidgetId", 0); } for (;;) { this.xawm = AppWidgetManager.getInstance(this.xc); ImageButton localImageButton1 = (ImageButton)findViewById(R.id.normal); View.OnClickListener local1 = new View.OnClickListener() { public void onClick(View paramAnonymousView) { RemoteViews localRemoteViews = new RemoteViews(xc.getPackageName(), R.layout.main); localRemoteViews.setImageViewResource(R.id.imageview, R.drawable.normal); xawm.updateAppWidget(xawID, localRemoteViews); Intent localIntent = new Intent(); localIntent.putExtra("appWidgetId", xawID); setResult(-1, localIntent); finish(); } }; localImageButton1.setOnClickListener(local1); ImageButton localImageButton2 = (ImageButton)findViewById(R.id.belton); View.OnClickListener local2 = new View.OnClickListener() { public void onClick(View paramAnonymousView) { RemoteViews localRemoteViews = new RemoteViews(xc.getPackageName(), R.layout.main); localRemoteViews.setImageViewResource(R.id.imageview, R.drawable.belton); xawm.updateAppWidget(xawID, localRemoteViews); Intent localIntent = new Intent(); localIntent.putExtra("appWidgetId", xawID); setResult(-1, localIntent); finish(); } }; localImageButton2.setOnClickListener(local2); ImageButton localImageButton3 = (ImageButton)findViewById(R.id.gold); View.OnClickListener local3 = new View.OnClickListener() { public void onClick(View paramAnonymousView) { RemoteViews localRemoteViews = new RemoteViews(xc.getPackageName(), R.layout.main); localRemoteViews.setImageViewResource(R.id.imageview, R.drawable.gold); xawm.updateAppWidget(xawID, localRemoteViews); Intent localIntent = new Intent(); localIntent.putExtra("appWidgetId", xawID); setResult(-1, localIntent); finish(); } }; localImageButton3.setOnClickListener(local3); ImageButton localImageButton4 = (ImageButton)findViewById(R.id.hardcore); View.OnClickListener local4 = new View.OnClickListener() { public void onClick(View paramAnonymousView) { RemoteViews localRemoteViews = new RemoteViews(xc.getPackageName(), R.layout.main); localRemoteViews.setImageViewResource(R.id.imageview, R.drawable.hardcore); xawm.updateAppWidget(xawID, localRemoteViews); Intent localIntent = new Intent(); localIntent.putExtra("appWidgetId", xawID); setResult(-1, localIntent); finish(); } }; localImageButton4.setOnClickListener(local4); ImageButton localImageButton5 = (ImageButton)findViewById(R.id.ironlak); View.OnClickListener local5 = new View.OnClickListener() { public void onClick(View paramAnonymousView) { RemoteViews localRemoteViews = new RemoteViews(xc.getPackageName(), R.layout.main); localRemoteViews.setImageViewResource(R.id.imageview, R.drawable.ironlak); xawm.updateAppWidget(xawID, localRemoteViews); Intent localIntent = new Intent(); localIntent.putExtra("appWidgetId", xawID); setResult(-1, localIntent); finish(); } }; localImageButton5.setOnClickListener(local5); ImageButton localImageButton6 = (ImageButton)findViewById(R.id.krylon); View.OnClickListener local6 = new View.OnClickListener() { public void onClick(View paramAnonymousView) { RemoteViews localRemoteViews = new RemoteViews(xc.getPackageName(), R.layout.main); localRemoteViews.setImageViewResource(R.id.imageview, R.drawable.krylon); xawm.updateAppWidget(xawID, localRemoteViews); Intent localIntent = new Intent(); localIntent.putExtra("appWidgetId", xawID); setResult(-1, localIntent); finish(); } }; localImageButton6.setOnClickListener(local6); ImageButton localImageButton7 = (ImageButton)findViewById(R.id.mtn94); View.OnClickListener local7 = new View.OnClickListener() { public void onClick(View paramAnonymousView) { RemoteViews localRemoteViews = new RemoteViews(xc.getPackageName(), R.layout.main); localRemoteViews.setImageViewResource(R.id.imageview, R.drawable.ninetyfour); xawm.updateAppWidget(xawID, localRemoteViews); Intent localIntent = new Intent(); localIntent.putExtra("appWidgetId", xawID); setResult(-1, localIntent); finish(); } }; localImageButton7.setOnClickListener(local7); ImageButton localImageButton8 = (ImageButton)findViewById(R.id.rusto); View.OnClickListener local8 = new View.OnClickListener() { public void onClick(View paramAnonymousView) { RemoteViews localRemoteViews = new RemoteViews(xc.getPackageName(), R.layout.main); localRemoteViews.setImageViewResource(R.id.imageview, R.drawable.rusto); xawm.updateAppWidget(xawID, localRemoteViews); Intent localIntent = new Intent(); localIntent.putExtra("appWidgetId", xawID); setResult(-1, localIntent); finish(); } }; localImageButton8.setOnClickListener(local8); return; } } @Override protected void onStart() { super.onStart(); } @Override protected void onStop() { super.onStop(); } } 

Точно так:

 protected void onCreate(Bundle paramBundle) { super.onCreate(paramBundle); SharedPreferences sharedPreferences = getSharedPreferences("myPref", 0); // get the last chosen sticker int sticker = sharedPreferences.getInt("chosenSticker", R.drawable.normal); //the .normal is the default value in case the user didn't choose one. myView.setImageViewResource(R.id.imageview, sticker); //now you can use it // store user's choice for example: View.OnClickListener local2 = new View.OnClickListener() { public void onClick(View paramAnonymousView) { SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putInt("chosenSticker", R.drawable.belton); editor.apply(); // your rest of your code here ... } } } 

SharedPreferences будет вашим лучшим выбором.

Фактически вы можете сохранить выбранное изображение любым способом хранения, используемым в android.

Мой любимый способ – использовать SharedPreferences .

Вот как вы это сделаете:

1) Инициализировать объект SharedPreferences. Используйте тег для классификации, если вы хотите хранить значения, которые влияют на различные аспекты вашего приложения.

 SharedPreferences myPrefs = getSharedPreferences("Stickers", MODE_PRIVATE); 

2) Извлеките связанные с ним значения. В вашем случае это может быть URL или идентификатор ресурса. Для функции требуется второе значение, которое будет возвращено, если предпочтение еще не установлено.

 myPrefs.getString("SelectedSticker", "default.jpg"); 

3) Сохраните новое значение или замените существующее.

 public void setStickerPreference(String stickerURL) { // retrieve editor SharedPreferences.Editor myPrefsEditor = myPrefs.edit(); // save or modify the field myPrefsEditor.putString("SelectedSticker", stickerURL); // commit changes prefsEditor.commit(); } 

Надеюсь это поможет!

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

Ваш вопрос о том, где разместить sharedpreference, хорошо помещайте его в функцию кода, которая меняет изображение или что вы говорите, вы можете использовать ввод-вывод для записи в временном хранилище, скажем Context.getCacheDir (), и вы можете сохранить свой образ Там, затем в вашем onResume () также проверьте, существует ли этот файл с File.exist()

Также не забудьте удалить его, когда вы закончите доступ к нему.