如何修改android中这种情况下的listview内容?

时间:2014-07-25 02:06:15

标签: android android-fragments

我正在处理警报应用程序。结构有点复杂。它的工作原理如下:

主要活动是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;才不是。再次感谢您的帮助

1 个答案:

答案 0 :(得分:0)

假设只有片段存在才需要这个,那么你可以在活动中通过id获取片段:

public void onBackPressed() {
  Fragment f = getFragmentManager().findFragmentById( ... ); // Fragment's Id 
  if (f.getClass() == AlarmFragment.class) {
     ((AlarmFragment)f).removeRecord();
     return;
  }
  super.onBackPressed();
}