我有一个片段,显示产品列表。每个列表项都有一个监视列表按钮,如果未将其列入监视列表,则显示一个透明的心形图标;如果已列入监视列表,则显示一个红色的心形图标。用户可以在列表页面中单击该心脏图标以监视或取消监视该产品。
当单击项目的正文时,用户可以转到产品详细信息页面。 这里还有一个监视列表按钮。
我想要的功能是,当用户单击详细信息页面中的监视列表图标时,当用户从详细信息页面返回到列表页面时,它也应该更改列表页面中的监视列表图标。
为此,我使用了本地广播管理器,以便当用户单击详细信息页面中的监视列表图标时,它将发送带有产品ID和监视列表状态的广播。我只是更改适配器json数组数据,并将广播发送的详细信息发送到我在列表页面上编写的接收器上,并通知数据集已更改。
我的问题是,什么时候应该注销在清单页面上写的接收者?
我只是无法注销列表页面广播接收器,因为我想接收从另一个页面的详细信息页面发送的事件。
这是我在列表页面上写的收件人。
final BroadcastReceiver broadcastReceiverWatchlist = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
try{
LogHelper.logReadyMadeString("aaaaaaaaa13");
String product_id = intent.getStringExtra("productId");
String watchlistStatus = intent.getStringExtra("wishlistStatus");
for(int i=0;i<totalProductJsonArray.length();i++){
if(totalProductJsonArray.getJSONObject(i).getString("product_id").equalsIgnoreCase(productId)){
totalProductJsonArray.getJSONObject(i).put("watchlist",watchlistStatus);
productListingAdaterRv.notifyDataSetChanged();
break;
}
}
}catch (Exception e){
e.printStackTrace();
}
}
};
LocalBroadcastManager.getInstance(mContext).registerReceiver(broadcastReceiverWatchlist, filter);
这是我在详细信息页面上编写的代码,用于将广播发送到列表页面
Intent intentToBroadCast = new Intent();
intentToBroadCast.setAction("com.applicationid.broadcast.WATCHLIST_NOTIFICATION");
intentToBroadCast.putExtra("wishlistStatus",watchlistStatus);
intentToBroadCast.putExtra("productId",productId);
LocalBroadcastManager.getInstance(mContext).sendBroadcast(intentToBroadCast);
代码运行正常。我在其详细信息页面中监视了产品。它在列表页面中发送广播,并更改相应产品ID的监视列表状态。
我想知道是否应该在列表页面上注销接收器?
感谢您的宝贵时间。如有任何疑问,请通知我。
注意:“产品列表”页面是家庭活动中的一部分。产品详细信息页面完全是另外一个活动。
答案 0 :(得分:1)
只需在ProductListFragment的onDestroy
中取消注册工作