Я пытаюсь оптимизировать приложение для Android - PullRequest
0 голосов
/ 15 сентября 2011

Я создал игру LightsOut для Java-курса и в качестве способа изучения Android я пытаюсь перестроить ее как приложение.

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

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

Первоначально, в Java, я сделал это:

    buttons = new LightButton[xCor][xCor];

    for (int x = 0; x < xCor; x++) {
        for (int y = 0; y < xCor; y++) {
            buttons[x][y] = new LightButton(this, x, y);
            panel.add(buttons[x][y]);
        }
    }

Где xCor был основан на пользовательском вводе до созданияигровое поле.Это облегчило инициализацию и проверку статуса игры путем обхода массива.Я просто не нашел способ сделать это с Android.

Итак, есть ли способ создать массив / список кнопок переключения на основе ввода пользователя?

Вот действие:

открытый класс LightsOutActivity расширяет Activity, реализует OnClickListener {

protected ToggleButton[][] buttonArray;



/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    buttonArray = new ToggleButton[4][4];

    for (int x = 0; x < 4; x++) {
        for (int y = 0; y < 4; y++) {
            buttonArray[x][y] = new ToggleButton(this);
            LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT, 1.0f);
            buttonArray[x][y].setLayoutParams(params);

            ((ViewGroup) findViewById(R.layout.main)).addView(buttonArray[x][y]);
        }
    }



    setContentView(findViewById(R.layout.main));
}

Немедленно приводит к принудительному закрытию.Единственное представление в R.layout.main - это линейное расположение.На данный момент я жестко закодировал размер массива.

1 Ответ

0 голосов
/ 15 сентября 2011

Не можете ли вы принять пользовательский ввод из представления EditText? Затем вы можете инициализировать ваш массив с этим вводом.

...