我在Android中开发。我尝试将蓝牙对象发送到另一个活动。
代码:
BluetoothSocket btSocket;
Intent i = new Intent(ActivityA.this, ActivityB.class);
i.putExtra(EXTRA_BT_SOCKET,btSocket);
startActivity(i);
但似乎无效,它显示的错误如下:
无法解析方法' putExtra(java.lang.String, android.bluetooth.BluetoothSocket)
如何通过意图将蓝牙对象发送到Android中的其他活动?
提前致谢。
答案 0 :(得分:2)
您不能将BluetoothSocket
个实例放在Bundle
中,也不能将其作为Intent
“额外”传递给它。这将需要序列化和反序列化对象,这将生成对象的副本。你不能复制那样的套接字。你想要做的只是在多个活动之间共享对象。最简单的方法是在某个地方的public static
变量中引用该对象,并在需要访问的所有活动中使用它。
答案 1 :(得分:1)
使用以下命令发送和检索对象:
//传递: intent.putExtra(“MyClass”,obj);
// To retrieve object in second Activity
getIntent().getSerializableExtra("MyClass");
答案 2 :(得分:0)
使用帮助程序类
public class BluetoothSocketHelper implements Serializable {
public BluetoothSocket btSocket;
//Constructor + getter/setters
}
从ActivityA发送:
BluetoothSocketHelper bluetoothSocketHelper;
Intent i = new Intent(ActivityA.this, ActivityB.class);
i.putExtra(DeviceListActivity.EXTRA_ADDRESS, address);
i.putExtra(EXTRA_BT_SOCKET, bluetoothSocketHelper);
startActivity(i);
然后在ActivityB中:
private BluetoothSocket btSocket;
if(getIntent().getExtras()!=null){
bluetoothSocketHelper = (BluetoothSocketHelper) getIntent().getSerializableExtra(EXTRA_BT_SOCKET);
btSocket = (BluetoothSocket) bluetoothSocketHelper.getBluetoothSocket();
}
答案 3 :(得分:0)
嘿@Wun 我知道为时已晚,但我找到了一种简单的方法来做到这一点,在您的第一个活动中,只需启动活动并发送您的对象:
Intent intent = new Intent(this, Second.class);
intent.putExtra("rideId", yourObject);
startActivity(intent);
在第二个活动中:
String id = extras.getString("rideId");
try {
JSONObject mJsonObject = new JSONObject(id);
} catch (JSONException e) {
e.printStackTrace();
}
答案 4 :(得分:-1)
你可以通过意图传递它作为一个包
Bundle bundle = new Bundle();
bundle.putParcelable("yourObject key name", YOUR_OBJECT); //make YOUR_OBJECT implement parcelable
Intent intents = new Intent(ActivityA.this, ActivityB.class);
intents.putExtra(Constants.BUNDLE_DATA, bundle);
startActivity(intents);
收到结束时(ActivityB.class)
if (intent != null && intent.hasExtra(Constants.BUNDLE_DATA)) {
Bundle bundle = intent.getBundleExtra(Constants.BUNDLE_DATA);
if (bundle != null && bundle.containsKey(yourObject key name)) {
Object yourObject = bundle.getParcelable(yourObject keyname);
}