今天得到一个需求,需要在一个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