setText 没起作用,但getText能得到值,很显然是UI没有刷新过来而已

当在复杂布局中遇到setText无法更新UI的问题时,通常是因为操作未在主线程进行。解决方案包括使用线程结合Handler或者直接在Handler中更新UI。线程+Handler更新方法通过创建新线程并发送消息到主线程的Handler来改变UI;直接Handler更新则直接在Handler内部处理UI更新,确保操作在主线程进行。
摘要由CSDN通过智能技术生成

原因

1、简单布局,我们使用setText,是没有问题呢!但是我们复杂布局是就不行了!Android 有主UI(主线程)和子UI(相当子线程),当我们多次操作时候,我应该放到子UI里面

两种方式

1、线程+handler更新

class testThread extends Thread{
public void run() {
Message message = new Message();
message.what = 1;
mHandler.sendMessage(message);
}
}
//在handler中更新UI
private Handler mHandler = new Handler(){
public void handleMessage(Message msg) {
switch (msg.what){
case 1:
tvTitle.setText(allCommodity.getCommodityName());

                break;
            case 2:
                tvTitle.setText("");
                break;

        }
    };
};
2、直接handler 更新

//在handler中更新UI
private Handler mHandler = new Handler(){
public void handleMessage(Message msg) {
switch (msg.what){
case 1:
tvTitle.setText(allCommodity.getCommodityName());

                break;
            case 2:
                tvTitle.setText("");
                break;

        }
    };
};
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 除了 `setText` 方法,还有很多其他方法可以更新 UI。以下是一些常见的方法: 1. `setVisibility(int visibility)`:设置视图的可见性。可以使用 `View.VISIBLE`、`View.INVISIBLE` 或 `View.GONE`。 2. `setImageResource(int resId)`:设置 `ImageView` 的图像资源。 3. `setBackgroundColor(int color)`:设置视图的背景颜色。 4. `setEnabled(boolean enabled)`:设置视图是否启用。 5. `setClickable(boolean clickable)`:设置视图是否可点击。 6. `setSelected(boolean selected)`:设置视图是否被选中。 7. `setProgress(int progress)`:设置进度条的进度。 8. `setRating(float rating)`:设置评分条的评分。 这些方法只是 UI 更新方法的一小部分。具体取决于你要更新的视图类型。 ### 回答2: 除了setText()方法,还可以使用以下方法来更新UI: 1. setVisibility(int visibility):设置视图的可见性。可以使用View.VISIBLE(可见)、View.INVISIBLE(不可见但仍占用空间)或View.GONE(不可见且不占用空间)来控制视图的可见性。 2. setEnabled(boolean enabled):设置视图是否可交互。通过传递true或false来启用或禁用视图的交互能力。 3. setBackgroundColor(int color):设置视图的背景颜色。可以通过传递颜色的整数来更改视图的背景色。 4. setImageResource(int resId):设置ImageView的图片资源。通过传递资源的ID来设置ImageView的图片。 5. setProgress(int progress):设置进度条的进度。可以通过传递一个整数来更新进度条的进度。 6. setChecked(boolean checked):设置复选框或单选按钮的选中状态。通过传递true或false来设置复选框或单选按钮的选中状态。 7. addView(View view):向ViewGroup中添加视图。可以通过此方法动态添加子视图到ViewGroup中。 8. invalidate():使视图无效并请求重绘。当视图需要更新或重绘时,可以调用此方法来触发视图的重绘过程。 9. requestLayout():请求视图的布局。当视图的大小或位置发生变化时,可以调用此方法来请求重新布局。 总结起来,除了setText()方法外,还有许多其他方法可以用来更新UI。通过设置可见性、可交互性、背景颜色、图片资源等属性,或者通过添加视图、更新进度、选中状态等操作,都可以实现UI的更新。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值