获取onActivityResult上的对象

时间:2016-04-27 12:14:11

标签: android android-intent

我创建了一个创建蓝牙设备对象的新活动。当我需要使用onActivityResult()方法返回时,我遇到了问题。

儿童活动

Intent intent = new Intent();
            intent.putExtra("BluetoothDevice", DeviceArrayList.get(arg2));
            setResult(Activity.RESULT_OK, intent);
            finish();

DeviceArrayList.get(arg2)是设备对象。

家长活动

 BluetoothDevice btDevice;
...

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

            if (requestCode == 1) {
                if(resultCode == Activity.RESULT_OK){

                    btDevice = data.getExtras("BluetoothDevice");

                }
                if (resultCode == Activity.RESULT_CANCELED) {
                    Toast.makeText(this, "Resultado cancelado", Toast.LENGTH_SHORT)
                            .show();
                }
            }
        }//onActivityResult

我可以在btDevice中获取该对象吗?

2 个答案:

答案 0 :(得分:2)

使您的蓝牙设备类序列化或可分配。然后您可以使用intent将其传递给第二个活动:

intent.putExtra("bluetooth", myBluetoothDeviceObject);

您可以使用以下方式在第二项活动中获得相同的内容:

intent.getParcelableExtra("bluetooth")

我比可序列化更喜欢parceable。 请查看android文档了解更多信息: http://developer.android.com/reference/android/os/Parcelable.html

答案 1 :(得分:0)

使BluetoothDevice类可序列化,并在onActivityResult中将其转换为

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        if (requestCode == 1) {
            if(resultCode == Activity.RESULT_OK){

                btDevice =(BluetoothDevice)data.getSerializableExtra("BluetoothDevice");

            }
            if (resultCode == Activity.RESULT_CANCELED) {
                Toast.makeText(this, "Resultado cancelado", Toast.LENGTH_SHORT)
                        .show();
            }
        }
    }//onActivityResult