Android 在一個Activity中重新整理另外一個Activity的UI
阿新 • • 發佈:2019-02-10
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 = newIntent(); 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生命週期
詳細的一會再寫...