java - settext() 不更新文本
问题描述
我是一名初学者程序员,我在我的应用程序中发现了一个错误/问题,它不能让我平静下来,即我有
W1.setText (numberAsString);
W2.setText (numberAsString);
W3.setText (numberAsString);
在这些我有一个问题
每次在文本视图中给出不同的数学结果值,但有时不使用变量 numberAsString 进行更新,尽管一直为 numberAsString 分配不同的值,有时给定 W1、W2、W3 不更新
public void Do()
{
los();
proba.setText("dodawanie");
c = Dodawanie(a,b);
String numberAsString = String.valueOf(c);
//Toast.makeText(getApplicationContext(), numberAsString, Toast.LENGTH_LONG).show();
//W1.setText(numberAsString);
Random liczba = new Random();
h = liczba.nextInt(5);
String H = String.valueOf(h);
String L1 = String.valueOf(l1);
String L2 = String.valueOf(l2);
//Toast.makeText(getApplicationContext(), H, Toast.LENGTH_LONG).show();
Toast.makeText(getApplicationContext(), numberAsString, Toast.LENGTH_LONG).show();
//////////////////////////////////////////////////////////////////////
///////////////////////////////////////////
if(h==0||h==3) {
W1.setText(numberAsString);
Wyb1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
p++;
String L = String.valueOf(p);
l.setText(L);
Do();
}
});
W2.setText(L1);
Wyb2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "Zle", Toast.LENGTH_LONG).show();
}
});
W3.setText(L2);
Wyb3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "Zle", Toast.LENGTH_LONG).show();
}
});
}
else if(h==1||h==4){
W2.setText(numberAsString);
Wyb2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
p++;
String L = String.valueOf(p);
l.setText(L);
Do();
}
});
W1.setText(L1);
Wyb1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "Zle", Toast.LENGTH_LONG).show();
}
});
W3.setText(L2);
Wyb3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "Zle", Toast.LENGTH_LONG).show();
}
});
if(h==2||h==5)
{
W3.setText(numberAsString);
Wyb3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
p++;
String L = String.valueOf(p);
l.setText(L);
Do();
}
});
W1.setText(L1);
Wyb1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "Zle", Toast.LENGTH_LONG).show();
}
});
W2.setText(L2);
Wyb2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "Zle", Toast.LENGTH_LONG).show();
}
});
}
}
}
解决方案
您需要在 UI 线程上才能更改 TextView 内容。
推荐阅读
- hive - hive - 如何为每个匹配选择前 N 个元素
- typescript - 更新项目时Angular 6 ng-select空值
- azure - Azure - “为 blahblahapp 初始化应用服务应用程序时出错”“连接到 SQL 服务器时出错(SQL 错误代码 40532)”
- c# - 找不到 ClassName 类型的默认构造函数。请提供缺少的构造函数
- arrays - ccall 真的会转换指针传递的参数吗?
- swift - Swift 中的 cos⁻¹ 按钮标题
- flowtype - 流程错误`未定义中缺少索引器属性`
- json - Amazon Mechanical Turk JSON 请求者架构
- javascript - Ionic 3 角度处理货币输入
- sql - 如何为我的案例实现存储过程?