未从意图中接收数据

时间:2018-04-29 07:40:59

标签: java android android-intent

我正在和BLE合作。我试图使用打算将rssi值从一个活动发送到另一个活动。

活动1 ,当rssi信号发生变化时,我发送的值如下所示:

    @Override
    public void onReadRemoteRssi(BluetoothGatt gatt, int rssi, int status) {
        if (status == BluetoothGatt.GATT_SUCCESS) {
            //first logcat
            Log.d("BLE_Strength_connected", String.format("BluetoothGatt ReadRssi[%d]", rssi));
            Intent i = new Intent(Activity1.this, Activity2.class);
            i.putExtra("key",rssi);
            startActivity(i);              
        }
    }
};

活动2: 在oncreate()方法中,我启动了一个处理程序,它每秒读取一次数据,我有以下内容:

    mIntent = getIntent();
    mHandler.postDelayed(new Runnable() {
        @Override
        public void run() {
            try {
                mHandler.postDelayed(this, 1000);
                //  if (mIntent != null) {
                int value = mIntent.getIntExtra("key", 0);
                Log.d("retrieve_RSSI", "value:" + value);
                //The key argument here must match that used in the other activity
                //  }
            }catch (Exception e) {

            }
        }
    }, 1000);

我在活动1上的logcat不断打印rssi信号,但活动2上的logcat只打印零。我想知道为什么我不能在活动2中收到任何值?

1 个答案:

答案 0 :(得分:0)

你的mIntent变量将始终引用相同的Intent对象,因此当你从中提取额外的“key”时,你当然总会获得相同的值。

您必须确保处理新的传入意图。例如,参见http://m.helloandroid.com/tutorials/communicating-between-running-activities如何做到这一点。