安卓:onActivityResult的片段不叫 [英] Android: onActivityResult in fragment not called
问题描述
找到许多关于我的问题,但他们没有工作对我来说职。我从那里我必须调用 startActivityForResult()
上一个TextView点击一个片段。从那里,一个活动将打开,其中用户将填补一些数据,并将其提交到数据库。从那里,我必须通过包含结果code的意图。但onActivityResult()的片段不会被调用。
Found numerous post regarding my issue but none of them worked out for me. I have a fragment from where I have to call startActivityForResult()
on a textview click. From there, an activity will open up where user will fill some data and submit it to database. From there, I have to pass an intent containing the result code. But the onActivityResult() in fragment is not get called.
这是我的片段 code
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);
这是我的活动 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的片段:
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;
}
}
那么,我该怎么办送交意愿回到我的片段,因此code?
So, how do I send intent back to my fragment with result code?
推荐答案
一直以来,我想我的片段进行拦截,所以我用的意图<一href="http://developer.android.com/reference/android/support/v4/content/LocalBroadcastManager.html">LocalBroadcastManager.
Since, I wanted to my fragment to intercept the intent so I used LocalBroadcastManager.
在的onCreate
片段的,我定义的:
LocalBroadcastManager.getInstance(getActivity()).registerReceiver(
mUpdateUIReceiver,
new IntentFilter(String action));
我在片段接收器:
My receiver in fragment:
private BroadcastReceiver mUpdateUIReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
//do Stuff
}
};
活动code将发送广播:
Activity code which will send broadcast:
LocalBroadcastManager.getInstance(this).sendBroadcast(
new Intent(String action));
希望它可以帮助别人谁是面临着同样的问题。
Hope it helps someone who is facing same problem.
这篇关于安卓:onActivityResult的片段不叫的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!