Android и жизненный цикл - PullRequest
       6

Android и жизненный цикл

0 голосов
/ 29 марта 2012

У меня проблема с моей деятельностью. Это мой onCreate:

case NORMAL:
        game = new Game(); // create new game
        game.initializeGame(); // initialize new game
        addSomeElements(result); // add elements to array due to user choice
        game.getCurrentLevel().nextPair(); // next pair of elements from array

        pictureGameLeft
                .setImageResource(colorsPictures.get(game.getCurrentLevel().getCurrentPair().getImageLeft()));
        pictureGameRight.setImageResource(colorsPictures.get(game.getCurrentLevel().getCurrentPair()
                .getImageRight()));


        break;
    case NOTNORMAL:
        game = new Game();
        game.initializeGame();
        addSomeElements(result);

        game.getCurrentLevel().nextPair();
        pictureGameLeft
                .setImageResource(shapesPictures.get(game.getCurrentLevel().getCurrentPair().getImageLeft()));
        pictureGameRight.setImageResource(shapesPictures.get(game.getCurrentLevel().getCurrentPair()
                .getImageRight()));

        break;

Это создание новой игры по выбору пользователя. Когда пользователь выберет NORMAL, к массиву «normal» будет добавлено несколько элементов. Если пользователь выбрал NOTNORMAL для массива "notnormal", будут добавлены другие элементы. После этого я получаю пару элементов от этого массива и показывает изображения.

Теперь это моя проблема. Когда я выбираю любой вариант, игра создается и показывает два изображения. Когда я блокирую свой телефон и после этого разблокирую, я получаю другие фотографии. Я думаю, что мой метод onCreate запускается снова. Я хочу сохранить первые изображения, и когда я блокирую и разблокирую свой телефон, я получаю те же фотографии. Как я могу это сделать. Я пытаюсь использовать это решение после onCreate:

@Override
protected void onSaveInstanceState(Bundle savedInstanceState) {
    savedInstanceState.putIntegerArrayList("table", (ArrayList<Integer>) normal);
    super.onSaveInstanceState(savedInstanceState);

}

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    ArrayList<Integer> normal = savedInstanceState.getIntegerArrayList("table");

}

но это не работает.

edit1:

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    ArrayList<Integer> normal = savedInstanceState.getIntegerArrayList("table");    
    pictureGameLeft.setImageResource(normal.get(game.getCurrentLevel().getCurrentPair().getImageLeft()));
        pictureGameRight.setImageResource(normal.get(game.getCurrentLevel().getCurrentPair().getImageRight()));

1 Ответ

0 голосов
/ 29 марта 2012
 ArrayList<Integer> normal = savedInstanceState.getIntegerArrayList("table");

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

...