Android: onActivityResult en fragmento no llamado
Encontramos numerosos puestos en relación con mi problema, pero ninguno de ellos funcionó para mí. Tengo un fragmento de donde tengo que llamar a startActivityForResult()
en un tecleo del textview. A partir de ahí, se abrirá una actividad donde el usuario llenará algunos datos y los enviará a la base de datos. A partir de ahí, tengo que pasar una intención que contiene el código de resultado. Pero el onActivityResult () en el fragmento no es llamado.
Código de mi fragmento
- Android ViewPager con la pestaña que no mantiene el estado tras la rotación de la pantalla
- Color de fondo personalizado para el elemento seleccionado con "activatedBackgroundIndicator" Navigation Drawer
- Cuando isValidFragment () de android de PreferenceActivity se llama?
- Error al ejecutar la aplicación Android - No se pudo inicializar la emulación de OpenglES, usa '-gpu off' para desactivarla
- Recuperar Contexto de un fragmento
Intent in = new Intent(getActivity(), NetBarrelActivity.class); in.putExtra(AppUtility.ORDER_ID, orderDAO.getOrderNum()); in.putExtra(AppUtility.TICKET_ID, 2); startActivityForResult(in, AppUtility.REQUEST_CODE);
Código de mi actividad
Double NetBarrels = crudeNetCalculator(GrossBarrels, ProductObsTemp, ProductObsGravity, ProductBSW); db.updateTank(OrderID, TicketTypeID, CarrierTicketNum, TankNum, TankTypeID, ProductObsTemp, ProductObsGravity, ProductBSW, GrossBarrels, NetBarrels); Intent in = new Intent(); setResult(RESULT_OK, in); finish();
OnActivityResult in Fragment:
@Override public void onActivityResult(int requestCode, int resultCode, Intent data) { Log.d(TAG, "onActivityReslt called"); super.onActivityResult(requestCode, resultCode, data); switch (requestCode) { case AppUtility.REQUEST_CODE: if(resultCode == Activity.RESULT_OK){ if (mOrdersDAO.getTicketType().equals(AppUtility.NET_BARREL)) { ArrayList<OrderTicketsDao> mOrderTicketsDaos = dbHandler .getOrderTicket(mOrdersDAO.getOrderNum()); if (mOrderTicketsDaos != null && mOrderTicketsDaos.size() > 0) { TankAdapter mTankAdapter = new TankAdapter(getActivity(), mOrderTicketsDaos); listTank.setAdapter(mTankAdapter); mTankAdapter.notifyDataSetChanged(); } } } break; default: break; } }
Entonces, ¿cómo puedo enviar la intención de nuevo a mi fragmento con código de resultado?
- Después de que el fragmento de cambio de configuración de backstack ahora está compartiendo el FrameLayout?
- RxJava como autobús de eventos?
- Fragmento pila trasera no funciona cuando se extiende AppCompatActivity
- Los fragmentos anidados desaparecen durante la animación de transición
- Obtener la vista del fragmento de FragmentActivity
- Cómo configurar OnClickListener para ScrollView?
- Mover fragmento de Android a un contenedor diferente No se puede cambiar el identificador de contenedor de fragmento
- Button Listener para el botón en el fragmento en android
Desde entonces, quería que mi fragmento para interceptar la intención por lo que utiliza LocalBroadcastManager .
En el onCreate
de Fragmento, onCreate
:
LocalBroadcastManager.getInstance(getActivity()).registerReceiver( mUpdateUIReceiver, new IntentFilter(String action));
Mi receptor en fragmento:
private BroadcastReceiver mUpdateUIReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { //do Stuff } };
Código de actividad que enviará la emisión:
LocalBroadcastManager.getInstance(this).sendBroadcast( new Intent(String action));
Espero que ayude a alguien que está enfrentando el mismo problema.
- AccessibilityService se inicia pero no recibe AccessibilityEvents en JellyBean
- No se puede obtener el recurso de cadena de matriz de XML