在一个activity中更改另一个activity的UI

来源:互联网 发布:js引用json文件数据 编辑:程序博客网 时间:2024/04/28 23:58

          如何在一个activity中更改另一个activity的UI了,如更改另一个activity中按钮的背景图片。

在这里,我上网搜了一些资料,使用Handler共享数据,以达到其效果。


代码:

被修改UI的activity:

package mark.zhang;import android.app.Activity;import android.content.Intent;import android.graphics.Color;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;public class MasterActivity extends Activity {// 用于msg.what值private static final int CHANGED = 0x0010;private Button btn_to = null;private TextView tv = null;private MyHandler handler = null;private MyAPP mAPP = null;@Overridepublic 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() {@Overridepublic void onClick(View v) {// 设置共享变量mAPP.setHandler(handler);// 启动另一个ActivityIntent intent = new Intent(MasterActivity.this,ToChangeViewActivity.class);startActivity(intent);}});}/** * 自己实现 Handler 处理消息更新UI *  * @author mark */final class MyHandler extends Handler {@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);if(msg.what == CHANGED) { // 更新UItv.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);}}}}

发出更改UI消息的activity:

package mark.zhang;import mark.zhang.MasterActivity.MyHandler;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;public class ToChangeViewActivity extends Activity {private static final int CHANGED = 0x0010;private MyAPP mAPP = null;private MyHandler mHandler = null;@Overrideprotected 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() {@Overridepublic void onClick(View v) {// 发送消息mHandler.sendEmptyMessage(CHANGED);ToChangeViewActivity.this.finish();}});}}

3.必须实现继承Application实现跨activity共享:

package mark.zhang;import mark.zhang.MasterActivity.MyHandler;import android.app.Application;/** * 自己实现Application,实现数据共享 *  * @author mark * */public class MyAPP extends Application {// 共享变量private MyHandler handler = null;// set方法public void setHandler(MyHandler handler) {this.handler = handler;}// get方法public MyHandler getHandler() {return handler;}}


0 0
原创粉丝点击