1. 程式人生 > >Android 在一個Activity中重新整理另外一個Activity的UI

Android 在一個Activity中重新整理另外一個Activity的UI

1. 通過宣告要重新整理的activity(Activity_A)為靜態變數,然後在一個activity(Activity_B)中直接呼叫Activity_A中的重新整理方法

        在Activity_A中宣告靜態變數:

public static Activity_A instance = null;
	Activity_B 中直接呼叫Activity_A中的重新整理方法:
Activity_A.instance.initRefresh();//initRefresh()是Activity_A中定義的方法
2.使用廣播
一.Activity_B中傳送廣播 
Intent intent = new 
Intent(); intent.setAction("action.refreshActivity_A"); sendBroadcast(intent);
二.Activity_A中接收廣播 

private BroadcastReceiver mRefreshBroadcastReceiver = new BroadcastReceiver() {

    @Override
public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        if 
(action.equals("action.refreshActivity_A")) { initRefresh(); } } };

IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("action.refreshActivity_A");
registerReceiver(mRefreshBroadcastReceiver, intentFilter);

@Override
protected void onDestroy() {
    super
.onDestroy(); unregisterReceiver(mRefreshBroadcastReceiver); }

三.使用Handler(重寫application來在兩個activity之間共享Handler
一會再寫...
四.使用StartActivityForResult
ActivityA中:
Intent intent  = new Intent();
intent.setClass(ActivityA.this,ActivityB.class);
Bundle bundle = new Bundle();
bundle.putString("title", title);//這些根據需求傳對應的值,不傳也可以。
bundle.putString("url", url);//
intent.putExtras(bundle);
startActivityForResult(intent, 1005);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (resultCode == 3) {
        if (requestCode == 1005) {
            if(data.getStringExtra("dataB") != null) {
                String data = data.getStringExtra("dataB");
Log.i("dataB", data);
//根據返回資料執行相關操作
//進行webView重新整理
webView.reload(); } } }}
ActivityB中:
Intent intent = new Intent();intent.putExtra("dataB", datab); //將值回傳setResult(3, intent);
finish(); //結束當前的activity生命週期


詳細的一會再寫...