2015-07-02 108 views
1

我在我的主要活动和一个按钮上设置了一个textView。当我点击按钮时,我希望textView根据下面的代码开始更新它的值。但是,这不起作用,问题在于循环。有人能解释为什么吗?我是新来的Java和Android开发在Android Studio中更新textView

button2 = (Button) findViewById(R.id.button); 
    button2.setOnClickListener(new OnClickListener() { 
     TextView textView = (TextView)findViewById(R.id.refView); 
     public void onClick(View arg0) { 
      for(i=1;i<1;i++){ 
       i = i + 1; 
      textView.setText(String.valueOf(i)+"hello"); 
      } 
     } 
    }); 

谢谢

回答

0

不知道究竟要发生什么。但是,你可以摆脱这一行

i = i + 1; 

,因为i++已经由1与for loop的每一次迭代增量i

其次,由于i在1开头,你想要的loop运行,同时i<1,它永远不会进入loop。这是从来没有低于1

第三,如果条​​件是不同的,说

for (int i=0; i<10; i++) 

它会通过loop跑这么快,你甚至不会承认的变化。

+0

谢谢。出于某种原因,我忘记了for循环的逻辑,并且我的代码无论如何都是非常糟糕的。我修正了它,但由于我的循环在我的OnClick中,循环一直运行直到结束,并在退出OnClick后显示最后一个值,而不是显示它实时更改(我将最终条件设置为较大并通过小数值增加我可以看着它改变)。这是不幸的 - 我必须找出现在 – AreM

+0

这是因为它变化非常快,UI线程并没有等待显示每一个。看看postDelay方法。这里有很多关于这个的帖子。我在我的手机上,所以我现在不打算搜索一个,但有很多例子 – codeMagic

2

试试这个:

TextView textView = (TextView)findViewById(R.id.refView); 
button2.setOnClickListener(new View.OnClickListener() { 
      int i = 0; 
      public void onClick(View arg0) { 
       i = i + 1; 
       textView.setText(String.valueOf(i)+"hello"); 
      } 
     }); 

for循环条件是错误的。 for(i=1;i<1;i++)甚至不会启动,因为已经符合1<1。 在onClick之前启动计数变量i,然后在点击之前更新它,并使用更新的i设置新文本。

+0

啊,这样一个简单的错误。我忘记了for循环的逻辑。谢谢 – AreM

+0

如果问题解决了,请在我的答案附近标记“打勾”。为了避免将来出现简单问题,请尝试“橡皮鸭调试”:) https://en.wikipedia.org/wiki/Rubber_duck_debugging –