Сохранение настроек

SQLite, Preferences, файлы, SD, Content Provider, XML, JSON
Ответить
OctahedroN
Сообщения: 18
Зарегистрирован: 15 фев 2012, 20:14

Сохранение настроек

Сообщение OctahedroN » 28 окт 2012, 17:38

Здравствуйте, нужна ваша помощь. Весь день промаялся с сохранением настроек. В данном коде пытаюсь сохранить значение rad, но оно меняется только при перезапуске программы. Колдовал с методом onVisibilityChanged но так ничего и не получилось. Подскажите пожалуйста что делать, вот код:

public class LiveWallpaperService extends WallpaperService {

public static final String PREFERENCES = "MyPreferences";
public static final String PREFERENCE_RADIUS = "preference_radius";
private int rad;
@Override
public Engine onCreateEngine() {
return new SampleEngine();
}

@Override
public void onCreate() {
super.onCreate();
}

@Override
public void onDestroy() {
super.onDestroy();
}

public class SampleEngine extends Engine implements SharedPreferences.OnSharedPreferenceChangeListener {

private LiveWallpaperPaintings painting;
private SharedPreferences prefs;

SampleEngine() {
SurfaceHolder holder = getSurfaceHolder();
prefs = LiveWallpaperService.this.getSharedPreferences(PREFERENCES, 0);
prefs.registerOnSharedPreferenceChangeListener(this);
onSharedPreferenceChanged(prefs, null);
painting = new LiveWallpaperPaintings(holder, getApplicationContext(),
rad);
}

public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
rad = Integer.parseInt(prefs.getString(PREFERENCE_RADIUS, "10"));
}

@Override
public void onCreate(SurfaceHolder surfaceHolder) {
super.onCreate(surfaceHolder);
setTouchEventsEnabled(true);
}

@Override
public void onDestroy() {
super.onDestroy();

painting.stopPainting();
}

@Override
public void onSurfaceChanged(SurfaceHolder holder, int format, int width, int height) {
super.onSurfaceChanged(holder, format, width, height);
painting.setSurfaceSize(width, height);
}

@Override
public void onSurfaceCreated(SurfaceHolder holder) {
super.onSurfaceCreated(holder);
painting.start();

}
@Override
public void onVisibilityChanged(boolean visible) {
if (visible) {

painting.resumePainting();
} else {

painting.pausePainting();
}
}

@Override
public void onSurfaceDestroyed(SurfaceHolder holder) {
super.onSurfaceDestroyed(holder);
boolean retry = true;
painting.stopPainting();
while (retry) {
try {
painting.join();
retry = false;
} catch (InterruptedException e) {}
}
}

@Override
public void onTouchEvent(MotionEvent event) {
super.onTouchEvent(event);
painting.doTouchEvent(event);
}

}

}

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Re: Сохранение настроек

Сообщение damager82 » 30 окт 2012, 12:58

OctahedroN писал(а):Здравствуйте, нужна ваша помощь. Весь день промаялся с сохранением настроек. В данном коде пытаюсь сохранить значение rad, но оно меняется только при перезапуске программы. Колдовал с методом onVisibilityChanged но так ничего и не получилось.
В коде, вижу, что вы читает настройку в методе onSharedPreferenceChanged. А куда хотите сохранить?
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

OctahedroN
Сообщения: 18
Зарегистрирован: 15 фев 2012, 20:14

Re: Сохранение настроек

Сообщение OctahedroN » 31 окт 2012, 15:54

Разобрался с проблемой, сделал отдельный метод в классе LiveWallpaperPaintings для передачи значений настроек, и сами значения передаю в методе onVisibilityChanged.

Ответить