1. 程式人生 > >關於兩個活動之間的本地廣播傳值問題

關於兩個活動之間的本地廣播傳值問題

  回味一下最近深受其擾的問題:手頭有兩個活動,監聽第一個活動中的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中,到這裡就大功告成啦,沒有啟動第二個活動,點選按鈕獲取的值就直接代入到了輸入框中,是不是很方便呢。