1. 程式人生 > >android之在activity中控制另一個activity的UI更新_如何在activity之間傳遞handler

android之在activity中控制另一個activity的UI更新_如何在activity之間傳遞handler

遇到一個問題,需要在一個activity中控制另一個acitivity做一些更新,沒想到傳遞handler的方法,通過以下方式解決。

1.在MyAPP中定義屬性handler

package jason.com;

import jason.com.MasterActivity.MyHandler;
import android.app.Application;

/**
* 自己實現Application,實現資料共享
* @author jason
*/
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、在主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進行傳值

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(CHANGED);
ToChangeViewActivity.this.finish();
}
});

}

作者:jason0539