我正在处理警报应用程序。结构有点复杂。它的工作原理如下:
主要活动是FragmentTabhost活动,它有4个选项卡,其中一个片段是报警列表。
因此,警报由alarmManager触发,它首先调用boardcast接收器,在接收器中有一个服务,启动一个新的活动,显示详细信息。警报
就是这样。我想做的是当用户onbackpress新活动时,我想更新该片段中的警报列表。怎么实现呢?谢谢你的帮助
更新:尝试使用Boardcast接收器,但它没有收到
报警活动中的
@Override
public void onBackPressed() {
Log.d("test1","test R1");
Intent intent = new Intent("on_alarm_remove");
LocalBroadcastManager.getInstance(ctx).sendBroadcast(intent);
super.onBackPressed();
}
警报选项卡中的片段
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
ctx = getActivity();
intentFilter = new IntentFilter("on_alarm_remove");
LocalBroadcastManager.getInstance(ctx).registerReceiver(mMessageReceiver, intentFilter);
}
private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.d("test1","test R");
db.removeRecord(db.getFirstAlarm().alarm_id);
reloadFragment();
}
};
@Override
public void onPause() {
if (mMessageReceiver != null)
LocalBroadcastManager.getInstance(ctx).unregisterReceiver(mMessageReceiver);
super.onPause();
}
在清单
<receiver android:name=".reminder.ReminderFrag$mMessageReceiver" />
它没有崩溃,但没有任何反应,在日志&#34;测试R1&#34;已经运行但是测试R&#34;才不是。再次感谢您的帮助
答案 0 :(得分:0)
假设只有片段存在才需要这个,那么你可以在活动中通过id获取片段:
public void onBackPressed() {
Fragment f = getFragmentManager().findFragmentById( ... ); // Fragment's Id
if (f.getClass() == AlarmFragment.class) {
((AlarmFragment)f).removeRecord();
return;
}
super.onBackPressed();
}