0

我有以下启动活动的代码,该代码用于当用户单击Android设备中的菜单按钮时出现的子菜单,问题是当单击按钮时,新的活动开始,这会丢失以前形成蓝牙连接!

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        Intent serverIntent = null;
        Intent PassIntent;
        Intent PassIntent1;
        switch (item.getItemId()) {
        /*case R.id.home:
            // Launch the DeviceListActivity to see devices and do scan
            serverIntent = new Intent(this, engineStarter.class);
            startActivity(serverIntent);
            return true;*/
        /*case R.id.insecure_connect_scan:
            // Launch the DeviceListActivity to see devices and do scan
            serverIntent = new Intent(this, DeviceListActivity.class);
            startActivityForResult(serverIntent, REQUEST_CONNECT_DEVICE_INSECURE);
            return true;*/
        /*case R.id.discoverable:
            // Ensure this device is discoverable by others
            ensureDiscoverable();
            return true;*/
        case R.id.setpassword:
            PassIntent = new Intent(this, SetPassword.class);
            startActivity(PassIntent);
            return true;
        case R.id.home:
            // Launch the DeviceListActivity to see devices and do scan
            serverIntent = new Intent(this, engineStarter.class);
            startActivity(serverIntent);
            return true;
        }
        return false;
    }
4

2 回答 2

1

你有两个选择:

1-将活动的启动模式更改为android:launchMode="singleTask",因此每次调用时它都不会创建新实例startActivity

2-保持Bluetooth连接service

还有另一种可能的解决方案,但可能不是优雅的解决方案,即定义一个自定义application类,您可以在其中维护Bluetooth连接,在这种情况下,该连接将与applicationContext.

于 2013-02-17T20:55:12.583 回答
0

另一种方法是保留相同的 Activity,但将新片段加载到替换当前片段的 Activity 中。使用 FragmentManager 时,您可以将新片段推送到堆栈上以向前导航,并将它们弹出以向后导航。这将允许您导航内容并保持蓝牙连接。

于 2013-02-17T20:59:07.680 回答