遇到一個問題,需要在一個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
微博:https://weibo.com/2553717707
博客:https://blog.csdn.net/jason0539(轉載請說明出處)