Как можно это сохранить чтобы после перезагрузки телефона, или перезапуска программы это

Рейтинг: -3Ответов: 1Опубликовано: 01.03.2015

Киньте идею пожалуйста. Есть 3 страницы, в каждой странице список из 10 строк. Если нажать на список то он поменяет цвет на красный.

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

Ответ типо: "Использовать БД" не уместен, так как от этого реализация этих действий мне будет не ясна. То что можно хранить инфу в БД я знаю, но каким образом это все будет работать?

Ответы

▲ 3

У тебя всё плохо. Архитектура плохая. Пути решения плохие. Я не могу смотреть на твой код и твои тщетные попытки изобрести очередной велосипед. Я просто покажу как делал я, когда писал свою одну программу для Андроида. Эта схема должна дать примерное понятие о том как надо восстанавливаться после поворотов экрана или закрытия. Хочу отметить, что объект preferences заполняется значения совершенно в других местах, а не в call-back методах. Например, у меня есть специальная активити, в которой я выставляю кучу настроек так как размер/цвет форму кисти.

    @Override
    protected void onCreate(Bundle in) {
        super.onCreate(in);
        if (in != null) {
            // этот блок выполняется когда произошёл поворот Activity.
            // Восстанавливаем из Bundle
        }else {
        // выполняется когда запущено первый раз. считывание из Preferences
        }
@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    application.saveStack(undoStack);
    application.saveBitmap(editableBitmap);
    writePaintBrushToBundle(paintBrush, outState);
    writePaintTextToBundle(paintText, outState);
}
public static void writePaintTextToBundle(Paint p, Bundle bundle) {
    bundle.putInt(PAINT_TEXT_COLOR_KEY, p.getColor());
    bundle.putFloat(PAINT_TEXT_SIZE_KEY, p.getTextSize());
}
public static Paint readPaintTextFromBundle(Bundle bundle) {
    Paint p = new Paint();
    int color = bundle.getInt(PAINT_TEXT_COLOR_KEY,
            DEFAULT_PAINT_TEXT_COLOR);
    float textSize = bundle.getFloat(PAINT_TEXT_SIZE_KEY,
            DEFAULT_PAINT_TEXT_SIZE);
    p.setColor(color);
    p.setTextSize(textSize);
    return p;
}

Это примерно должно прояснить тебе как надо работать с Bundle и Preferences. Если до сих пор непонятно - я могу выложить полный код своей активити. Она большая (писал давно, вместе с антипаттернами), но могу указать на методы на которые стоит обратить внимание.