ListView показывает данные только при повороте телефона - PullRequest
0 голосов
/ 30 апреля 2020

я начинаю следить за некоторыми чтениями и примерами использования модуля bluetooth с Android, в основном я хочу создать тестовое приложение, которое показывает список связанных устройств, когда я запускаю приложение, я понимаю в основном весь код, которым я следую чтобы сделать мое тестовое приложение, но я застреваю, потому что, когда я запускаю приложение, это запрашивает включение Bluetooth и ничего не показывает, приложение показывает список только при повороте телефона. Что я делаю неправильно? спасибо за любую помощь

это мой код в java

public class MainActivity extends AppCompatActivity {
ListView listViewDispositivos;

BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
ArrayList<String> arrayListaConectados = new ArrayList<>();
ArrayAdapter<String> adaptador;
String infoMac, direccionMac;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    listViewDispositivos = findViewById(R.id.listViewDispositivos);

    if(bluetoothAdapter == null){
        Toast.makeText(MainActivity.this, "Dispositivo no disponible", Toast.LENGTH_LONG).show();
        finish();
    }
    else if(!bluetoothAdapter.isEnabled()){
        Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
        startActivityForResult(enableBtIntent, 1);
    }
    else {
        Set<BluetoothDevice> pairedDevices = bluetoothAdapter.getBondedDevices();
        adaptador = new ArrayAdapter<>(MainActivity.this, android.R.layout.simple_list_item_1, arrayListaConectados);
        if (pairedDevices.size() > 0) {

            for (BluetoothDevice device : pairedDevices) {
                arrayListaConectados.add(device.getName() + "\n" + device.getAddress());
                adaptador.notifyDataSetChanged();
            }
        } else {
            Toast.makeText(MainActivity.this, "No se encontraron dispositivos", Toast.LENGTH_LONG).show();
        }
        listViewDispositivos.setAdapter(adaptador);
}

}

1 Ответ

0 голосов
/ 30 апреля 2020

Изначально Bluetooth не включен, и вы используете Intent для запроса активации Bluetooth, который показывает диалог. Это не вызвало бы условие else, потому что Bluetooth выключен.

Таким образом, вам нужно получить сопряженные устройства в onActivityResult, который будет вызываться сразу после включения Bluetooth.

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if(requestCode == 1){
        if (resultCode == RESULT_OK) {
            //Bluetooth is enable get paired device list here
        }else {
            //Show Error
        }
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...