ListView доступного устройства Bluetooth гаснет при вращении экрана - PullRequest
0 голосов
/ 25 апреля 2019

У меня есть одно действие, в котором я сканирую устройства Bluetooth и помещаю их в список.когда я сканирую, устройства отображаются хорошо, но когда я поворачиваю экран (книжная ориентация <->), представление списка становится пустым.

Я реализовал метод onSaveInstanceState, но я не знаю, что сохранить в outState.put ...

 // implement the broadcast reciever for the BT scanning
    private final BroadcastReceiver btScanBrcastReceiver = new BroadcastReceiver() {
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
            if (BluetoothDevice.ACTION_FOUND.equals(action)) {
                // Discovery has found a device. Get the BluetoothDevice
                // object and its info from the Intent.
                BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
                mBTDevices.add(device);
                availableDevicesList = new AvailableDevicesList(context, R.layout.device_list_view, mBTDevices);

                lv_list_devices.setAdapter(availableDevicesList);
            }

        }
    };

в методе onCreate

//perform action when clicking on device scaning
        scan_dv_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                // check if the scan in in process
                if(btAdapter.isDiscovering()){
                    // cancel the scanning
                    btAdapter.cancelDiscovery();

                    // for version greater than Lolipop
                    checkBTPermission();

                    // restart it
                    btAdapter.startDiscovery();

                    // register the Broadcast receiver
                    IntentFilter IntentfindDv = new IntentFilter(BluetoothDevice.ACTION_FOUND);
                    registerReceiver(btScanBrcastReceiver, IntentfindDv);
                }
                if(!btAdapter.isDiscovering()){
                    //// for version greater than Lolipop
                    checkBTPermission();

                    // start the scanning
                    btAdapter.startDiscovery();
                    // register the Broadcast receiver
                    IntentFilter IntentfindDv = new IntentFilter(BluetoothDevice.ACTION_FOUND);
                    registerReceiver(btScanBrcastReceiver, IntentfindDv);

                }
            }
        });

1 Ответ

0 голосов
/ 25 апреля 2019

Может быть, ваша активность воссоздается, когда вы меняете ориентацию (портрет <-> пейзаж). Если вы не хотите обновлять пользовательский интерфейс при повороте экрана, используйте в файле манифеста следующее:

<activity
android:name=".MainActivity"            
android:configChanges="orientation">

Если вы хотите избежать активного отдыха на нескольких мероприятиях, пожалуйста, проверьте ниже,

Android: configChanges Перечисляет изменения конфигурации, которые выполняет деятельность справится сам. Когда изменение конфигурации происходит во время выполнения, активность отключается и перезапускается по умолчанию, но объявляется конфигурация с этим атрибутом предотвратит перезапущен. Вместо этого активность продолжает выполняться, и ее Метод onConfigurationChanged () вызывается.

https://developer.android.com/guide/topics/manifest/activity-element

  android:configChanges=["mcc", "mnc", "locale",
                         "touchscreen", "keyboard", "keyboardHidden",
                         "navigation", "screenLayout", "fontScale",
                         "uiMode", "orientation", "density",
                         "screenSize", "smallestScreenSize"]
...