關於兩個活動之間的本地廣播傳值問題
阿新 • • 發佈:2018-11-09
回味一下最近深受其擾的問題:手頭有兩個活動,監聽第一個活動中的sendMessage,呼叫第二個活動的方法並得到一個值,這時,希望在不啟動第二個活動的同時於第一個活動中體現這個值。感謝論壇上為我指明方向的大佬們,決定用本地廣播實現這個需求,實現過程及思路如下:
首先,呼叫第二個活動中的sendMessage,在第二個活動中例項化本地廣播
localBroadcastManager = LocalBroadcastManager.getInstance(this);
篩選執行後需要的值,通過action繫結活動,並把需要的值賦給需要傳輸的intent,sendBroadcast。
之後就要在第一個活動中抱住這一捆資料啦,
localBroadcastManager = LocalBroadcastManager.getInstance(this); intentFilter = new IntentFilter(); intentFilter.addAction("xxxxxxxxxxxxxxxxxxx和前面的馬賽克一樣"); localReceiver = new LocalReceiver(); localBroadcastManager.registerReceiver(localReceiver,intentFilter);
這裡我們定義一下LocalReceiver
class LocalReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { //這裡就是我們需要執行的邏輯啦 String x = intent.getStringExtra("x"); String y = intent.getStringExtra("y"); String z = intent.getStringExtra("z"); String rotation = intent.getStringExtra("rotation"); textX.setText(x); textY.setText(y); textZ.setText(z); textRotation.setText(rotation); } }
拿到傳過來的值體現在了TextView中,到這裡就大功告成啦,沒有啟動第二個活動,點選按鈕獲取的值就直接代入到了輸入框中,是不是很方便呢。