Cómo registrarReceiver en Fragmento
Mostrar dispositivos Bluetooth en un ListView
. Lo probé en una Activity
antes y funcionó, pero ahora tengo que incluir este ListView
en un Fragment
Está claro que una o dos cosas no pertenecen aquí, como el registerReceiver
, unregisterReceiver
y RESULT_CANCELED
.
- Sincronizar todo el ListView en un ViewPager
- Fragmento superpuesto
- Cordova webview dentro de Android Fragment on Cordova 4.0
- Actualizar ViewPager dinámicamente?
- DialogFragments con dispositivos api level <11
protected void onResume() { registerReceiver(receiver, filter); filter = new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_STARTED); registerReceiver(receiver, filter); filter = new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_FINISHED); registerReceiver(receiver, filter); filter = new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED); registerReceiver(receiver, filter); } @Override protected void onPause() { // TODO Auto-generated method stub super.onPause(); unregisterReceiver(receiver); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data); if(resultCode == RESULT_CANCELED){ Toast.makeText(getActivity() , "El Bluetooth debe estar activado para continuar", Toast.LENGTH_SHORT).show(); getActivity().finish(); } }
Las líneas que comienzan con registerReceiver
, unegisterReceiver
y if(resultCode==RESULT_CANCELED){
me están dando problemas.
Como un hecho adicional, he tratado de cambiarlo a una actividad en lugar de un fragmento, pero mi clase principal tiene un error con eso porque estoy trabajando con Fragmentos.
- ¿Cómo crear múltiples fragmentos mediante programación?
- Detectar el gesto de desplazamiento en fragmento
- Botón de un fragmento dentro de ViewPager activar onClickListener en referencia incorrecta
- Fragmento / Actividad Ciclos de vida y cambio de orientación
- DialogFragment y botón Atrás
- Android API TabActivity deprecation
- Android Pull-to-Refresh con Fragmento ListView y Adaptador ListView personalizado
- Desplazamiento vertical en el visor
Todos estos métodos y variables pertenecen a la clase Activity
. Así que considere llamarlos con el contexto de la Actividad de Fragmento de los padres.
Puede llamar a los métodos necesarios como:
getActivity().registerReceiver(receiver, filter);
y
getActivity().unregisterReceiver(receiver);
if(resultCode==RESULT_CANCELED){
Puede ser reemplazado por
`if(resultCode == Activity.RESULT_CANCELED){`
Espero que esto solucione su problema.
Los métodos registerReceiver()
y unregisterReceiver()
son métodos de la clase Context
. En este caso, usted necesita su Activity
(que es un Context
).
Los fragmentos proporcionan un acceso fácil a su actividad que contiene a través del método getActivity()
.
RESULT_CANCELED
es simplemente una variable estática en la clase Activity
, por lo que puede acceder a ella en cualquier lugar a través de Activity.RESULT_CANCELED
.
Dado que la actividad se recrea en los cambios de configuración mientras que el fragmento resiste, significa que el contexto de la actividad podría desaparecer lo que conduce a la pérdida de receptores en la recreación de la actividad. Por lo tanto, sugiero que registre receptores de difusión en su fragmento con contexto de nivel de aplicación. A continuación, puede registrar y anular el registro de sus receptores en onResume()
y onPause()
del fragmento, respectivamente. De esta manera sus receptores están vinculados al ciclo de vida de los fragmentos y no a la actividad.
- Instalar Android Support Repository sin conexión
- Intenta invocar el método virtual 'android.view.Window $ Callback android.view.Window.getCallback ()' en una referencia de objeto nulo