Intereting Posts
Печатать содержимое матрицы opencv в Java Как я могу просматривать видео в видеообъявлениях в определенной позиции? android.permission.INTERNET? Как безопасно сохранить заказ в облаке, если вы не можете проверить платеж из облака? Как вы масштабируете и набиваете растровое растение, используемое в качестве фона? Android-геокодер обратного расположения – надежный способ получить город? Получить информацию о текущем медиафайле, воспроизводимом в Android-плеерах Загрузить загруженный Gif-образ в android Java.lang.IllegalStateException: YouTubeServiceEntity не инициализировала ошибку при использовании YouTubePlayerApi Чтение даты REST WCF от android Как вы получаете объект Drawable из идентификатора ресурса в пакете android? Таблица заголовков Android TableLayout Как предотвратить соединение Bluetooth bluetooth Bluetooth от умирания сразу после .connect ()? Этот макет RelativeLayout или его родитель LinearLayout бесполезен Поделиться в Facebook в android (как твиттер)

Android: onActivityResult в не вызываемом фрагменте

Нашел много сообщений о моей проблеме, но никто из них не работал для меня. У меня есть фрагмент, из которого мне нужно вызвать startActivityForResult() в текстовом клике. Оттуда откроется активность, где пользователь заполнит некоторые данные и отправит их в базу данных. Оттуда я должен передать намерение, содержащее код результата. Но onActivityResult () в фрагменте не вызван.

Код из моего фрагмента

 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); 

Код моей деятельности

 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; } } 

Итак, как мне отправить намерение обратно к моему фрагменту с кодом результата?

Solutions Collecting From Web of "Android: onActivityResult в не вызываемом фрагменте"

Поскольку я хотел, чтобы мой фрагмент перехватил намерение, я использовал LocalBroadcastManager .

В onCreate of Fragment я определил:

 LocalBroadcastManager.getInstance(getActivity()).registerReceiver( mUpdateUIReceiver, new IntentFilter(String action)); 

Мой приемник по фрагменту:

 private BroadcastReceiver mUpdateUIReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { //do Stuff } }; 

Код операции, который будет отправлять:

 LocalBroadcastManager.getInstance(this).sendBroadcast( new Intent(String action)); 

Надеюсь, это поможет кому-то, кто сталкивается с такой же проблемой.