[英]Simple while-loop doesnt work
我有一个小问题。 我认为解决方案非常简单,但不幸的是我找不到它。 我希望有人可以帮助我,我有一个while循环,他必须数到十并将数字写到TextView中。 它仍然无法正常工作...谢谢您的帮助! 这是代码:
package de.androidnewcomer.animation;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TextView;
import static android.R.attr.button;
import static de.androidnewcomer.animation.R.id.textView;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageView ball=(ImageView)findViewById(R.id.ball);
Button button=(Button)findViewById(R.id.button);
button.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button:
count();
break;
}
}
private void count() {
TextView textView=(TextView)findViewById(R.id.textView);
int i;
i=1;
while(i<10) {
i++;
textView.setText(i);
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
将setText()与整数值一起使用是为了设置字符串资源引用。 要设置文本本身,您必须提供一个字符串:使用setText("" + i);
它应该工作。
textView.setText(..)需要一个字符串对象,但您使用的是int。 您必须使用以下可能的选项将int转换为字符串:
您可以使用String.valueOf(i) : textView.setText(String.valueOf(i));
您可以使用Integer.toString(i) : textView.setText(Integer.toString(i));
您可以使用空字符串文字 : textView.setText("" + i);
我更喜欢最后一个选择。 使用您的代码,它应类似于以下代码:
private void count() {
TextView textView=(TextView)findViewById(R.id.textView);
int i;
i=1;
while(i<10) {
i++;
textView.setText("" + i);
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
您可以使用for循环而不是while循环,例如以下代码:
private void count() {
TextView textView=(TextView)findViewById(R.id.textView);
for(int i = 1; i < 11; i++){ // From 1 to 10
textView.setText("" + i);
Thread.sleep(200);
}
}
使用CountDown,因为您正在阻塞主线程
CountDownTimer countDownTimer = new CountDownTimer(2000 /*amount*/, 200/*step*/) {
public void onTick(long millisUntilFinished) {
textView.setText("what ever you want");
}
public void onFinish() {
textView.setText("Done");
}
};
countDownTimer.start();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.