zoukankan      html  css  js  c++  java
  • 【转】android之在activity中控制另一个activity的UI更新_如何在activity之间传递handler

    来自:http://blog.csdn.net/jason0539/article/details/18055259

    遇到一个问题,需要在一个activity中控制另一个acitivity做一些更新,没想到传递handler的方法,通过以下方式解决。

    1.在MyAPP中定义属性handler

    1.在MyAPP中定义属性handler

    1. package jason.com;  
    2.   
    3. import jason.com.MasterActivity.MyHandler;  
    4. import android.app.Application;  
    5.   
    6. /** 
    7. * 自己实现Application,实现数据共享 
    8. * @author jason 
    9. */  
    10. public class MyAPP extends Application {  
    11. // 共享变量  
    12. private MyHandler handler = null;  
    13.   
    14. // set方法  
    15. public void setHandler(MyHandler handler) {  
    16. this.handler = handler;  
    17. }  
    18.   
    19. // get方法  
    20. public MyHandler getHandler() {  
    21. return handler;  
    22. }  
    23.   
    24. }  


    2、在主activity 中给MyAPP的属性handler赋值

    1. @Override  
    2. public void onCreate(Bundle savedInstanceState) {  
    3.   
    4. super.onCreate(savedInstanceState);  
    5. setContentView(R.layout.main);  
    6.   
    7.   
    8. mAPP = (MyAPP) getApplication();  
    9. handler = new MyHandler();  
    10. tv = (TextView) findViewById(R.id.tv);  
    11. btn_to = (Button) findViewById(R.id.btn_to);  
    12.   
    13. // 设置监听器  
    14. btn_to.setOnClickListener(new OnClickListener() {  
    15. @Override  
    16. public void onClick(View v) {  
    17. // 设置共享变量  
    18. mAPP.setHandler(handler);  
    19. // 启动另一个Activity  
    20. Intent intent = new Intent(MasterActivity.this,  
    21. ToChangeViewActivity.class);  
    22. startActivity(intent);  
    23. }  
    24. });  
    25.   
    26. }  


    3、在另一个activity中获取MyAPP中handler进行传值

    1. protected void onCreate(Bundle savedInstanceState) {  
    2. super.onCreate(savedInstanceState);  
    3. setContentView(R.layout.show);  
    4.   
    5. mAPP = (MyAPP) getApplication();  
    6. // 获得该共享变量实例  
    7. mHandler = mAPP.getHandler();  
    8. findViewById(R.id.btn_chang).setOnClickListener(new OnClickListener() {  
    9.   
    10. @Override  
    11. public void onClick(View v) {  
    12. // 发送消息  
    13. mHandler.sendEmptyMessage(CHANGED);  
    14. ToChangeViewActivity.this.finish();  
    15. }  
    16. });  
    17.   
    18. }  

    除了这个方案,又想到了另外一个比较变通的方案,利用Broadcast机制来实现,见地址:http://blog.csdn.net/jason0539/article/details/18075293

  • 相关阅读:
    LeetCode题解之Flipping an Image
    LeetCode 之Find Minimum in Rotated Sorted Array
    LeetCode题解Transpose Matrix
    LeetCode 题解之Minimum Index Sum of Two Lists
    LeetCode题解之Intersection of Two Linked Lists
    LeetCode 题解之Add Two Numbers II
    LeetCode题解之Add two numbers
    href="#"与href="javascript:void(0)"的区别
    有关ie9 以下不支持placeholder属性以及获得焦点placeholder的移除
    ie7下属性书写不规范造成的easyui 弹窗布局紊乱
  • 原文地址:https://www.cnblogs.com/mochaMM/p/5125092.html
Copyright © 2011-2022 走看看