Android:未调用片段中的onActivityResult

Nit*_*ish 11 android android-fragments

发现很多关于我的问题的帖子,但没有一个对我有用.我有一个片段,我必须startActivityForResult()在textview点击调用.从那里开始,将打开一个活动,用户将填写一些数据并将其提交给数据库.从那里,我必须传递包含结果代码的意图.但是片段中的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);
Run Code Online (Sandbox Code Playgroud)

我的活动代码

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();
Run Code Online (Sandbox Code Playgroud)

片段中的onActivityResult:

    @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;
    }
}
Run Code Online (Sandbox Code Playgroud)

那么,如何使用结果代码将意图发送回我的片段?

Nit*_*ish 19

因为,我希望我的片段拦截意图所以我使用了LocalBroadcastManager.

onCreateFragment中,我定义了:

LocalBroadcastManager.getInstance(getActivity()).registerReceiver(
            mUpdateUIReceiver,
            new IntentFilter(String action));
Run Code Online (Sandbox Code Playgroud)

我的接收器片段:

private BroadcastReceiver mUpdateUIReceiver = new BroadcastReceiver() {

    @Override
    public void onReceive(Context context, Intent intent) {
        //do Stuff
    }
};
Run Code Online (Sandbox Code Playgroud)

将发送广播的活动代码:

LocalBroadcastManager.getInstance(this).sendBroadcast(
            new Intent(String action));
Run Code Online (Sandbox Code Playgroud)

希望它可以帮助那些面临同样问题的人.