gpt4 book ai didi

java - view.setText 发生在循环之后?

转载 作者:行者123 更新时间:2023-12-01 13:44:45 25 4
gpt4 key购买 nike

我是 Android 编程新手。我在单击按钮时发生以下代码

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();
}
}
}

但是当我在手机上运行它时,直到 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。您可以应用相同的逻辑。

我已经提供了这个solution一个问题here -

[编辑]

试试这个:

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 = 0String code = "Hello There"

关于java - view.setText 发生在循环之后?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20442679/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com