我有我的第一个活动,其中BT连接建立。有一个选项呈现给用户,根据他们的选择,一个不同的活动将加载。
问题是,两个活动都需要BT连接,我不认为破坏一个连接只是为了建立另一个连接有什么意义。
是否有一种方法,我可以传递活动之间的连接?
有没有人有一些例子为我或也许是一个链接?
我试过"class MyApplication extends Application
",但我不能使用:
super.onCreate(savedInstanceState);
setContentView(R.layout.blablabla);
这可能是一个相当愚蠢的问题,但我只在Android +- 2周。
您是否尝试过使用应用程序对象将蓝牙连接存储在对象中并使用您的活动来获取它?
试试这样做。(注:我从未在Android上使用过蓝牙,所以我不知道该使用哪些相关类。在本例中,我将使用BluetoothDevice
,因为根据库文档,它似乎是正确的类)
public class MyApplication extends Application {
BluetoothDevice device;
...
public synchronized BluetoothDevice getBtConnection() {
if (device == null) {
// construct a BluetoothDevice object and put it into variable device
}
return device;
}
}
这样,你的第一个活动只需要这样做:
public class FirstActivity extends Activity {
private BluetoothDevice device;
...
@Override
protected void onCreate(Bundle b) {
super(b);
...
device = ((MyApplication) getApplication()).getBtDevice();
...
}
...
}
然后,任何时候你的其他活动需要使用该连接,他们只需要调用getBtDevice()
,因为FirstActivity
已经实例化了它。
您尝试过使用Bundle吗?
检查相关主题
http://www.anddev.org/putting_an_object_into_a_bundle-t6431.html我知道这是一个古老的问题,但是对于新访问这个话题的人:
我认为Kibibyte的答案也会起作用,但除此之外还有使用(Bound)Service
的选项。即使应用程序关闭
Android官方服务文档
我也遇到过同样的问题,终于解决了!所以首先你应该在一个活动中创建你的连接,并确保连接存储在public static变量中,你可以在你想要蓝牙连接的每个活动中调用该连接变量。我建议您使用service类来创建连接,并使用如下的连接变量
BluetoothChatService mChatService=DeviceListActivity.chatService