Ich schreibe eine Anwendung, die 2 Fragmente enthält, die von einem Viewpager umschlossen sind. Ich versuche, die Liste der verfügbaren Bluetooth-Geräte zu erhalten, aber die ListView ändert sich nie.
Dies ist das erste Mal, dass ich mit Fragmenten arbeite. Ich hoffe ihr könnt mir helfen. Vielen Dank im Voraus!
Hier ist das Fragment:BroadcastReceiver ruft niemals OnReceive on Fragment in ViewPager auf
public class BluetoothDevicesFragment extends Fragment {
private ListView mListView;
private BluetoothListAdapter mAdapter;
private ArrayList<String> mArray;
private SwipeRefreshLayout mRefresh;
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
//Finding devices
if (BluetoothDevice.ACTION_FOUND.equals(action)) {
// Get the BluetoothDevice object from the Intent
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
// Add the name and address to an array adapter to show in a ListView
//Snackbar.make(getView(), device.getName(), Snackbar.LENGTH_LONG).setAction("Action", null).show();
mArray.add(device.getName() + "\n" + device.getAddress());
mAdapter.notifyDataSetChanged();
} else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) {
mRefresh.setRefreshing(false);
getActivity().unregisterReceiver(mReceiver);
}
}
};
public BluetoothDevicesFragment() {
}
public static BluetoothDevicesFragment newInstance() {
Bundle args = new Bundle();
BluetoothDevicesFragment fragment = new BluetoothDevicesFragment();
fragment.setArguments(args);
return fragment;
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_bluetooth, container, false);
mListView = (ListView) rootView.findViewById(R.id.listviewB);
mArray = new ArrayList<>();
mAdapter = new BluetoothListAdapter(getContext(), R.layout.fragment_bluetooth, mArray);
mListView.setAdapter(mAdapter);
mRefresh = (SwipeRefreshLayout) rootView.findViewById(R.id.refresh);
mRefresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
getActivity().registerReceiver(mReceiver, filter);
Bluetooth.bluetoothAdapter.cancelDiscovery();
Bluetooth.bluetoothAdapter.startDiscovery();
}
});
return rootView;
}
}
Haben Sie registriert es im Manifest zu überprüfen ? –
@kishorejethava Nein. Musste ich? –