gpt4 book ai didi

Android:未调用 fragment 中的 onActivityResult

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:56:44 24 4
gpt4 key购买 nike

找到了很多关于我的问题的帖子,但没有一个对我有用。我有一个 fragment ,我必须在点击 TextView 时调用 startActivityForResult()。从那里,将打开一个 Activity ,用户将在其中填写一些数据并将其提交到数据库。从那里,我必须传递一个包含结果代码的 Intent 。但是 fragment 中的 onActivityResult() 没有被调用。

我 fragment 中的代码

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

我的 Activity 代码

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

fragment 中的 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;
}
}

那么,如何将 Intent 连同结果代码发送回我的 fragment ?

最佳答案

因为,我想让我的 fragment 拦截 Intent ,所以我使用了 LocalBroadcastManager .

在Fragment的onCreate中,我定义:

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

fragment 中的我的接收器:

private BroadcastReceiver mUpdateUIReceiver = new BroadcastReceiver() {

@Override
public void onReceive(Context context, Intent intent) {
//do Stuff
}
};

将发送广播的 Activity 代码:

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

希望对遇到同样问题的人有所帮助。

关于Android:未调用 fragment 中的 onActivityResult,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18679127/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com