安卓更新界面问题
来源:互联网 发布:网页代码编写软件 编辑:程序博客网 时间:2024/05/07 19:13
作为一个新手,原本一个简单的textview的settext方法居然发现更新不了界面,甚至会出错崩溃。
对此很无语,自己很无语。后查找资料才发现,因为使用了线程获取http的数据后再更新主界面。但主界面的线程是分离的,不只能直接由线程更新。菜鸟的我就被这样一个无知的问题给折腾了一天。问题找到了,解决问题有下面三种方式:
第一种:
1
2
3
4
5
6
7
8
new
Handler(context.getMainLooper()).post(
new
Runnable() {
@Override
public
void
run() {
// 在这里执行你要想的操作 比如直接在这里更新ui或者调用回调在 在回调中更新ui
}
});
context是你传过来的context对象
第二种:
1
2
3
4
5
6
7
8
9
// 如果当前线程是UI线程,那么行动是立即执行。如果当前线程不是UI线程,操作是发布到事件队列的UI线程
// 因为runOnUiThread是Activity中的方法,Context是它的父类,所以要转换成Activity对象才能使用
((Activity) context).runOnUiThread(
new
Runnable() {
@Override
public
void
run() {
// 在这里执行你要想的操作 比如直接在这里更新ui或者调用回调在 在回调中更新ui
}
});
第三种是使用Handler的方法,往Handler中发送一个消息,然后当Handler接收到你发送过来的消息,再在Handler执行相应的操作
这是接收消息执行的代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
private
Handler handler =
new
Handler() {
@Override
public
void
handleMessage(Message msg) {
super
.handleMessage(msg);
switch
(msg.what) {
case
1
:
button1.setText(
"点击安装"
);
down =
1
;
break
;
case
2
:
down =
2
;
button1.setText(
"打开"
);
break
;
}
}
};
这是发送消息的代码:
1
2
3
4
// 往handler发送一条消息 更改button的text属性
Message message =
newMessage();
message.what =
1
;
handler.sendMessage(message);
0 0
- 安卓更新界面问题
- 安卓 Android 线程更新界面
- 安卓SDK更新问题
- 安卓版本更新后进入引导界面
- 安卓笔记--intent传值不更新问题
- 安卓欢迎界面和activity之间的跳转问题
- 安卓界面编程
- 安卓词典界面
- 安卓界面布局
- 关于安卓界面
- 安卓界面优化
- 安卓开发遇到的一些问题(持续更新)
- 解决安卓SDK无法更新其他版本问题。
- 安卓第三方问题集合(持续更新)
- 安卓各种调试问题合辑[不定时更新]
- 安卓WebView问题总汇(持续更新)
- 安卓知识点及问题处理方案记录,持续更新~
- 安卓对话框问题集锦-不定时更新
- soapUI接口测试工具所有版本下载地址
- Android ListView中使用CheckBox等的混乱问题
- Git 使用规范流程
- 高性能网站建设指南---前端工程师技能精髓--小记1
- the first day C++中结构体的使用
- 安卓更新界面问题
- 注视点估计(二维法)
- Android主题和样式之系统篇
- java synchronized详解
- 【Android】2015.08.29 安卓官方文档学习:Day2 Count:2
- 标准C++中的STL容器类简介
- 一个创业失败者的忠告:请不要再参加创业活动
- node.js 针对不同的请求路径(url) 做出不同的响应
- 未读消息橡皮动画