Android中在一个Activity中修改另外一个Activity中的UI

xiaoxiao2021-02-28  77

今天得到一个需求,需要在一个Activity(TestA)中修改另外一个Activity(TestB)中的UI

1.自己实现Application,实现数据共享  public class MyAPP extends Application {       // 共享变量       private MyHandler handler = null;       // set方法       public void setHandler(MyHandler handler) {           this.handler = handler;       }       // get方法       public MyHandler getHandler() {           return handler;       }   } 

2.在需要修改UI的Activity中实现Handler处理消息更新UI和设置共享变量   

public class TestB extends Activity {           private Button btn_to = null;       private TextView tv = null;       private MyHandler handler = null;       private MyAPP mAPP = null;      @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);   // 设置共享变量           mAPP.setHandler(handler);      }     //自己实现 Handler 处理消息更新UI      final class MyHandler extends Handler {           @Override           public void handleMessage(Message msg) {               super.handleMessage(msg);               if(msg.what == 0){ // 更新UI                   tv.setText("changed after: I have be changed by Other Activity!");                   tv.setBackgroundColor(Color.BLUE);                                      btn_to.setText("I have been changed!");                   btn_to.setBackgroundColor(Color.RED);               }           }       }   }  

3.在TestA中获取共享变量,并发送消息

public class TestA extends Activity {       private MyAPP mAPP = null;        private MyHandler mHandler = null;      @Override       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() {               @Override               public void onClick(View v) {                   // 发送消息                   mHandler.sendEmptyMessage(0);               }           });       }   }

可参考:http://blog.csdn.net/tan313/article/details/42706311

转载请注明原文地址: https://www.6miu.com/read-47607.html

最新回复(0)