#java #android #bluetooth-lowenergy
#java #Android #bluetooth-lowenergy
Вопрос:
Вот как я делаю список во «втором действии».
private void setList(){
ArrayList<BluetoothLE> aBleAvailable = new ArrayList<>();
if(ble.getListDevices().size() > 0){
for (int i=0; i<ble.getListDevices().size(); i ) {
aBleAvailable.add(new BluetoothLE(ble.getListDevices().get(i).getName(), ble.getListDevices().get(i).getMacAddress(), ble.getListDevices().get(i).getRssi(), ble.getListDevices().get(i).getDevice()));
}
BasicList mAdapter = new BasicList(this, R.layout.simple_row_list, aBleAvailable) {
@Override
public void onItem(Object item, View view, int position) {
TextView txtName = view.findViewById(R.id.txtText);
String aux = ((BluetoothLE) item).getName() " " ((BluetoothLE) item).getMacAddress();
txtName.setText(aux);
}
};
listBle.setAdapter(mAdapter);
listBle.setOnItemClickListener((parent, view, position, id) -> {
BluetoothLE itemValue = (BluetoothLE) listBle.getItemAtPosition(position);
ble.connect(itemValue.getDevice(), bleCallbacks());
});
}else{
dAlert = setDialogInfo("Ups", "We do not find active devices", true);
dAlert.show();
finish();
}
}
Я хочу переместить выбранные значения, чтобы создать RecicleView, присутствующий в «MainActivity».
Спасибо.
Ответ №1:
Я думаю, вы пытаетесь перечислить устройства Bluetooth в процессе сканирования, а затем, когда пользователь выбирает одно устройство из ListView
списка, вы хотите отправить его обратно в MainActivity.
Если это так, вам нужно изменить MainActivity
и вместо запуска с SecondActivity
помощью startActivity()
метода, вы должны использовать startActivityForResult()
, чтобы получить результат, когда пользователь выбирает свое устройство для подключения
MainActivity.java
int BLUETOOTH_DEVICE_REQUEST = 1
Intent i = new Intent(this, SecondActivity.class);
startActivityForResult(i, BLUETOOTH_DEVICE_REQUEST);
Тогда у вас SecondActivity
есть два случая: либо пользователь выберет устройство, либо нет. Итак, в случае, если он выбрал устройство, вы можете отправить его обратно следующим образом.
SecondActivity.java
Intent intent= new Intent();
intent.putExtra("result",result);
setResult(Activity.RESULT_OK,intent);
finish();
Если вам нужно прервать операцию и ничего не отправлять обратно, вы можете сделать это таким образом
SecondActivity.java
Intent intent = new Intent();
setResult(Activity.RESULT_CANCELED, intent);
finish();
После этого вы можете наблюдать результат при MainActivity
использовании обратного onActivityResult()
вызова
MainActivity.java
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == BLUETOOTH_DEVICE_REQUEST ) {
if(resultCode == Activity.RESULT_OK){
String result=data.getStringExtra("result");
// Use it as you like
}
if (resultCode == Activity.RESULT_CANCELED) {
//Write your code if there's no result
}
}
}