试图设置textview

时间:2012-02-25 20:33:20

标签: android android-layout

这是我的课程,它进入无限循环请检查我出错的地方......我正在尝试获取图像视图的id,使其随机,然后尝试使用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 个答案:

答案 0 :(得分:1)

嘿,我发现你的代码&amp;在代码中发现错误:

请将以下代码与您的代码进行比较...构造函数

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

    }

答案 1 :(得分:0)

你有一个while(true)循环,只有当v不可点击时才会中断。如果v是可点击的,会发生什么?代码中的任何内容都不会将v设置为不可单击,默认情况下的视图不可单击。

答案 2 :(得分:0)

我注意到你正在使用Object类。对象基本上是所有类扩展的根。如果在构造函数中调用super(),它将调用超类构造函数,也就是Object ......这可能就是问题。

尝试查找有关如何从Java / Android开始的教程,因为您还使用了不推荐的变量名称。例如。在Java中: - 一个类以Capital开头 - 变量,以小写字母开头 - 函数以小写字母开头:

public class Captial
{
    private int anIntegerStartsWithLowerCase;

    private void functionsAreLowerCaseAsWell()
    {
    }
}

另外看看你的循环......它看起来永远不会结束