如何在activity handler之间传递Handler

代码片段(2)
1.&[代码][Java]代码&&&&
public class MainActivity extends Activity {
private final static int CHANGE = 1;
private static TextView textV
private static Handler handler = new Handler(){
public void handleMessage(Message msg) {
switch(msg.what) {
case CHANGE :
textView.setText(msg.obj + "");
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView) findViewById(R.id.hello);
new Thread() {
public void run() {
for(int i=0;i&100;i++) {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
Message msg = new Message();
msg.what = MainActivity.CHANGE;
MainActivity.handler.sendMessage(msg);
}.start();
2.&[代码]用activity控制dialog显示值的变化&&&&
public class MainActivity extends Activity {
private final static int CHANGE = 1;
private static TextView text2;
private static TextView text5;
private static Handler handler = new Handler(){
public void handleMessage(Message msg) {
switch(msg.what) {
case CHANGE :
text2.setText(msg.obj + "");
text5.setText(msg.obj + "");
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Dialog dialog = new Dialog(this);
dialog.setContentView(R.layout.custom_dialog);
dialog.setTitle("test");
text2 = (TextView) dialog.findViewById(R.id.text2);
text5 = (TextView) dialog.findViewById(R.id.text5);
dialog.show();
new Thread() {
public void run() {
for(int i=0;i&100;i++) {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
Message msg = new Message();
msg.what = MainActivity.CHANGE;
MainActivity.handler.sendMessage(msg);
}.start();
开源中国-程序员在线工具:
开源从代码分享开始
亭子happy的其他代码扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
android面试题和答案
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口Activity中Handler的使用
用Handler更新一个TextView的背景颜色在5种颜色中循环变换
Handle特点:
1,传递Message。用于接收子线程发送的数据,并用此数据配合主线程更新UI。
2,传递Runable对象。用于通过Handler绑定的消息队列,安排不同操作的执行顺序。
第一种实现方法:
import java.util.R
import com.example.handle.R.
import android.R.
import android.app.A
import android.content.res.Resources.T
import android.os.B
import android.os.H
import android.os.M
import android.widget.TextV
public class MainActivity extends Activity {
int color[];
Handler myH
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv=(TextView)findViewById(R.id.tv);
color=new int[]{
R.color.black,
R.color.blue,
R.color.red,
R.color.yellow,
R.color.green
};//背景颜色数组
myHandler=new Handler();
myHandler.post(rb);
Runnable rb=new Runnable(){
public void run(){
Random rd=new Random();//产生随机数
int i=rd.nextInt(5);
tv.setBackgroundColor(getResources().getColor(color[i]));
myHandler.postDelayed(rb,1000);//设置延迟时间
第二种实现方法:
import android.app.A
import android.content.res.R
import android.graphics.drawable.D
import android.os.B
import android.os.H
import android.os.M
public class SecondActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
new updateColor().start();
Handler handler=new Handler(){
public void handleMessage(Message msg){
Resources res = getResources();
Drawable drawable = res.getDrawable(R.color.black);
Drawable drawable1 = res.getDrawable(R.color.aqua);
Drawable drawable2 = res.getDrawable(R.color.green);
Drawable drawable3 = res.getDrawable(R.color.red);
Drawable drawable4 = res.getDrawable(R.color.pink);
Bundle b=msg.getData();
int key=b.getInt("key");
switch(key){
case 0: SecondActivity.this.getWindow().setBackgroundDrawable(drawable) ;
case 1:SecondActivity.this.getWindow().setBackgroundDrawable(drawable1);
case 2:SecondActivity.this.getWindow().setBackgroundDrawable(drawable2);
case 3:SecondActivity.this.getWindow().setBackgroundDrawable(drawable3);
case 4:SecondActivity.this.getWindow().setBackgroundDrawable(drawable4);
class updateColor extends Thread{
public void run() {
while(true){
Message msg=handler.obtainMessage();
Bundle bundle=new Bundle();
bundle.putInt("key", i);
msg.setData(bundle);
handler.sendMessage(msg);
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
您对本文章有什么意见或着疑问吗?请到您的关注和建议是我们前行的参考和动力&&
您的浏览器不支持嵌入式框架,或者当前配置为不显示嵌入式框架。3003人阅读
遇到一个问题,需要在一个activity中控制另一个acitivity做一些更新,没想到传递handler的方法,通过以下方式解决。
1.在MyAPP中定义属性handler
.MasterActivity.MyH
import android.app.A
* 自己实现Application,实现数据共享
* @author jason
public class MyAPP extends Application {
// 共享变量
private MyHandler handler =
// set方法
public void setHandler(MyHandler handler) {
this.handler =
// get方法
public MyHandler getHandler() {
2、在主activity 中给MyAPP的属性handler赋值
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mAPP = (MyAPP) getApplication();
handler = new MyHandler();
tv = (TextView) findViewById(R.id.tv);
btn_to = (Button) findViewById(R.id.btn_to);
// 设置监听器
btn_to.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// 设置共享变量
mAPP.setHandler(handler);
// 启动另一个Activity
Intent intent = new Intent(MasterActivity.this,
ToChangeViewActivity.class);
startActivity(intent);
3、在另一个activity中获取MyAPP中handler进行传值
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.show);
mAPP = (MyAPP) getApplication();
// 获得该共享变量实例
mHandler = mAPP.getHandler();
findViewById(R.id.btn_chang).setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// 发送消息
mHandler.sendEmptyMessage(CHANGED);
ToChangeViewActivity.this.finish();
除了这个方案,又想到了另外一个比较变通的方案,利用Broadcast机制来实现,见地址:
作者:jason0539
博客:(转载请说明出处)
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:302527次
积分:4721
积分:4721
排名:第1876名
原创:148篇
转载:11篇
评论:189条
阅读:7905
文章:65篇
阅读:136831
你花五六块买个盒饭吃,觉得很节省,有人在路边买了七毛钱馒头吞咽后步履匆匆;你八点起床看书,觉得很勤奋,上微博发现曾经的同学八点就已经在面对繁重的工作;你周六补个课,觉得很累,打个电话才知道许多朋友都连续加班了一个月。亲爱的,你真的还不够苦,不够勤奋和努力。的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益}

我要回帖

更多关于 activity传递参数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信