Java view.setText是否在循环后发生?
我是android编程新手。我有以下代码发生在一个按钮点击Java view.setText是否在循环后发生?,java,android,Java,Android,我是android编程新手。我有以下代码发生在一个按钮点击 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final Button button = (Button) findViewById(R.id.morse_btn); button.setOn
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Button button = (Button) findViewById(R.id.morse_btn);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
loopCode();
}
});
}
这就叫:
public void loopCode()
{
String code = "Hello There";
TextView view = (TextView) findViewById(R.id.code_txt);
String s = "";
for(int i = 0; i < code.length(); i++)
{
s+=code.charAt(i);
view.setText(s);
try {
TimeUnit.SECONDS.sleep(1);
} catch(InterruptedException ex) {
Thread.currentThread().interrupt();
}
}
}
public void loopCode()
{
String code=“你好”;
TextView视图=(TextView)findViewById(R.id.code_txt);
字符串s=“”;
对于(int i=0;i
但是,当我在手机上运行它时,文本不会被追加,直到for循环完成后,即我按下按钮,几秒钟后,整个字符串“Hello There”出现
我怎样才能让它像打字机一样一次只写一个字符呢
谢谢您需要使用
view.append(“”)
,它将新文本追加到现有文本中
请尝试以下代码:
int i = 0; //declare this globally
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
if(i != 10) {
text.append(" " + i);
i++;
handler.postDelayed(this, 1000);
}
}
}, 1000);
}
此代码将每隔一秒钟向TextView
添加一个新数字,直到达到计数10为止。您可以应用相同的逻辑
我向一个问题提供了这一点:
[编辑]
试试这个:
String code = "Hello There"; //declare variable globally
int i = 0; //declare globally
TextView view; //declare globally
public void loopCode()
{
view = (TextView) findViewById(R.id.code_txt);
//String s = "";
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
if(i != code.length()) {
view.append(" " + code.charAt(i));
i++;
handler.postDelayed(this, 1000);
}
}
}, 1000);
}
}
不要忘记全局声明
int i=0
和String code=“Hello There”
。文本视图中存在两种不同的方法setText
- 公共最终无效设置文本(整数剩余)
- 公共最终void setText(字符序列文本)
public void loopCode()
{
String code=“你好”;
TextView视图=(TextView)findViewById(R.id.code_txt);
字符串s=“”;
对于(int i=0;i
您需要追加文本not setextDescription Resource Path Location Type不能引用在不同方法MainActivity.java中定义的内部类中的非最终变量i
public void loopCode()
{
String code = "Hello There";
TextView view = (TextView) findViewById(R.id.code_txt);
String s = "";
for(int i = 0; i < code.length(); i++)
{
view.setText(String.valueOf(i));
try {
TimeUnit.SECONDS.sleep(1);
} catch(InterruptedException ex) {
Thread.currentThread().interrupt();
}
}
}