安卓:onActivityResult的片段不叫 [英] Android: onActivityResult in fragment not called

查看:127
本文介绍了安卓:onActivityResult的片段不叫的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

找到许多关于我的问题,但他们没有工作对我来说职。我从那里我必须调用 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆