新活动从Intent开始

时间:2013-02-17 19:55:40

标签: android android-intent android-activity

我有以下代码启动活动,代码用于当用户点击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;
    }

2 个答案:

答案 0 :(得分:1)

您有两种选择:

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

2-在Bluetooth

中维护service个连接

另一种可能的解决方案,但可能不是优雅的解决方案,是定义一个自定义application类,您可以在其中维护Bluetooth连接,在这种情况下,applicationContext连接将紧密到{{1} }}

答案 1 :(得分:0)

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