A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© gezhizheng 中级黑马   /  2015-1-28 17:03  /  1644 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

注:本方法是FirstActivity创建Handler对象,然后传递给SecondActivity,实现可以在SecondActivity中使用这个Handler发送消息,让FirstActivity去做相应的处理,并未实现双向消息传递,消息只能是由SecondActivity发送传递给FristActivity处理,单向的传递。
[size=13.63636302947998px]遇到一个问题,需要在一个activity中控制另一个acitivity做一些更新,没想到传递handler的方法,通过以下方式解决。
[size=13.63636302947998px]1.在MyAPP中定义属性handler
[size=13.63636302947998px]
  1. package jason.com;
  2. import jason.com.MasterActivity.MyHandler;
  3. import android.app.Application;
  4. /**
  5. * 自己实现Application,实现数据共享
  6. * @author jason
  7. */
  8. public class MyAPP extends Application {
  9. // 共享变量
  10. private MyHandler handler = null;
  11. // set方法
  12. public void setHandler(MyHandler handler) {
  13.     this.handler = handler;
  14. }
  15. // get方法
  16. public MyHandler getHandler() {
  17.     return handler;
  18. }
  19. }
复制代码
2、在主activity 中给MyAPP的属性handler赋值
@Override
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() {
        @Override
        public void onClick(View v) {
           // 设置共享变量
            mAPP.setHandler(handler);
            // 启动另一个Activity
           Intent intent = new Intent(MasterActivity.this,
           ToChangeViewActivity.class);
           startActivity(intent);
        }
    });
}
3、在另一个activity中获取MyAPP中handler进行传值
  1. protected void onCreate(Bundle savedInstanceState) {
  2.     super.onCreate(savedInstanceState);
  3.     setContentView(R.layout.show);
  4.     mAPP = (MyAPP) getApplication();
  5.     // 获得该共享变量实例
  6.     mHandler = mAPP.getHandler();
  7.     findViewById(R.id.btn_chang).setOnClickListener(new OnClickListener() {
  8.     @Override
  9.     public void onClick(View v) {
  10.     // 发送消息
  11.         mHandler.sendEmptyMessage(CHANGED);
  12.         ToChangeViewActivity.this.finish();
  13.     }
  14.     });
  15. }
复制代码
[size=13.63636302947998px]还有一种更简洁的方式可以实现以上功能:

[size=13.63636302947998px]在FirstActivity中定义一个public static 权限的Handler对象,然后就能够通过类索引在SecondActivity中使用到这个对象来发送消息了。





1 个回复

倒序浏览
这是哪一块的知识呀  没见过啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马