Я делал живые обои и, наконец, до сих пор добился успеха, но теперь я хотел бы позволить пользователям выбирать фон, который они хотели бы иметь, который я имею в папке рисования.
Я пробовал несколько вещей, но до сих пор не повезло, проходя через это.
У меня есть XML-файл для чтения одного из двух изображений, которые они могут выбрать (я полагаю, если я смогу получить одно работающее, все они должны быть одинаковыми)
Вот как это выглядит до сих пор
"DarkBack"
"MediumBackb"
"LightBack"
<string-array name="frontleft_value">
<item>"1"</item>
<item>"2"</item>
<item>"3"</item>
</string-array>bubble
Таким образом, они выбирают один из трех фонов
В деятельности у меня это:
mPrefs = UnderwaterActivity.this.getSharedPreferences(SHARED_PREFS_NAME, 0);
mPrefs.registerOnSharedPreferenceChangeListener(this);
onSharedPreferenceChanged(mPrefs, null);
}
public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
myOtherClass.myfrontleftimage = (Integer.parseInt(prefs.getString("front_sub_left_choice", "1")));
}
Так что это должно дать мне целое число 1 или 2, в зависимости от того, какой щелчок в настройках livewallpaper.
Фоновое изображение хранится в другом классе, но сначала я должен сравнить то, на что они кликнули, поэтому я попытался с помощью оператора if / else безуспешно.
Я попробовал строки, но это не сработало, поэтому я изменил их на int и мне повезло, но не всем.
Если бы еще было так.
private int chooseImage(){
int theImage = 0;
if(myfrontleftimage == 1){
theImage = R.drawable.image1;
}else if (myfrontleftimage == 2){
theImage = R.drawable.image2;
}else{
theImage = R.drawable.image3;
}
return theImage;
}
Затем я помещаю этот метод в фоновое изображение, чтобы он мог его прочитать, у меня есть файл настройки Java и также реализован механизм для общих настроек, но у меня есть ощущение, что это в моем операторе if else, что я хочу получить значение предпочтения и сравнить их, если они равны 1, 2, 3, если один из них равен одному из них, то он загружает это фоновое изображение, имеет смысл в теории, но не на практике, очевидно, любая помощь будет принята с благодарностью, если я могу понять это, тогда я могу использовать его для спрайтов, которые есть у меня в живых обоях.
Заранее спасибо
EDIT:
Я обнаружил проблему до сих пор, я положил в файл pref это:
<string-array name="livewallpaper_back_names">
<item>Brown</item>
<item>Grey</item>
</string-array>
<string-array name="livewallpaper_back_value">
<item>0x7f020000</item>
<item>0x7f020001</item>
</string-array>
Затем в файле sharedpreferences я пытаюсь разобрать 0x7f020000 (который я хочу использовать для выбора изображения) в int, например, так:
public void onSharedPreferenceChanged(SharedPreferences prefs,
String key)
{
sackNum = Integer.parseInt(prefs.getString("livewallpaper_back", "0x7f020000"));
}
Но тогда я получаю эту ошибку, что это не может быть сделано
E/AndroidRuntime(340): java.lang.NumberFormatException: unable to parse '0x7f020000' as integer
Так вот где я застрял на данный момент.
Я проверил журнал, и массив действительно прошел и не меняет проблему, так что именно в этом и заключается проблема, и если кто-то может помочь мне разобрать эту вещь в int, я был бы очень признателен.
Еще раз спасибо за любую помощь заранее.