我创建了一个创建蓝牙设备对象的新活动。当我需要使用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中获取该对象吗?
答案 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