Попытка установить просмотр текста - PullRequest
0 голосов
/ 26 февраля 2012

Вот мой класс, он идет в бесконечный цикл, пожалуйста, проверьте, где я ошибаюсь ... Я пытаюсь получить идентификаторы представления изображения, делая его случайным, а затем пытаюсь установить представление текста с описанием imageview

public class Object {

int ObectIds[];
LinearLayout HUDDisplay;
int HudDisplayText[] = {R.id.HUD_Text_Element1,
        R.id.HUD_Text_Element2,
        R.id.HUD_Text_Element3,
        R.id.HUD_Text_Element4,
        R.id.HUD_Text_Element5,
        R.id.HUD_Text_Element6,
        R.id.HUD_Text_Element7};

TextView[] text;
View v;

Object(Context context,View vs) {
    super();
    ObectIds = new int[8];
    HUDDisplay=(LinearLayout)vs.findViewById(R.id.HUD_Display);

    for (int i = 0; i < 8; i++) {
        ObectIds[i] = (R.id.imageView1) + i;
        Log.d("ImageView", "Image Id's " + ObectIds[i]);

    }

    randomize(vs);
    setTextView();

}

public void setTextView()
{
    for(int i=0;i<8;++i)
    {
         text[i] =(TextView) HUDDisplay.findViewById(HudDisplayText[i]);

         text[i].setText(v.getContentDescription());
    }
}

public void randomize(View vs) {
    for (int i = 0; i < 8; i++) {
        while (true) {
            shuffleArray(ObectIds);
         v = vs.findViewById(ObectIds[i]);
            Log.d("Image", "Image Id's " + v.getId());
            if (!v.isClickable()) {
                v.setClickable(true);
                break;
            }
        }
    }
}

static void shuffleArray(int[] ar) {
    Random rnd = new Random();
    for (int i = ar.length - 1; i >= 0; i--) {
        int index = rnd.nextInt(i + 1);
        // Simple swap
        int a = ar[index];
        ar[index] = ar[i];
        ar[i] = a;
    }
}

}

Ответы [ 3 ]

1 голос
/ 27 февраля 2012

Эй, парень, я заметил твой код и обнаружил ошибку в коде:

Пожалуйста, сравните следующий код с вашим кодом ... Конструктор

 for (int i = 0; i < 8; i++) {
        ObectIds[i] = **HudDisplayText[i]**;
        Log.d("ImageView", "Image Id's " + ObectIds[i]);

    }
0 голосов
/ 26 февраля 2012

Я заметил, что вы используете класс Object. Объект в основном является корнем, из которого расширяются все классы. Если вы вызовите super () в конструкторе, он вызовет конструктор суперкласса, который также является Object ... Это может быть проблемой.

Попробуйте поискать руководства по началу работы с Java / Android, поскольку вы также используете имена переменных, которые не рекомендуются. Например. на Яве: - класс начинается с заглавной буквы - переменная, начинается с нижнего регистра - функция начинается со строчной буквы:

public class Captial
{
    private int anIntegerStartsWithLowerCase;

    private void functionsAreLowerCaseAsWell()
    {
    }
}

Также взгляните на свой цикл ... Похоже, он никогда не заканчивается

0 голосов
/ 26 февраля 2012

У вас есть цикл while (true), который вы прерываете, только если v не активен. Что произойдет, если v кликабельна? Ничто в вашем коде никогда не устанавливает v как не реагирующее на клики, а представления по умолчанию не являются кликабельными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...