0

我在片段活动中有方法,如果该方法触发,我需要更新片段列表视图。我正在处理数据库。我在哪里清除特定用户的数据库,我将更新片段。

问题是:如果用户在同一个屏幕上,如果片段活动方法触发,如何更新片段列表视图?它仅在我需要返回活动并再次需要进入同一屏幕时才有效。

这是代码:

public class ActivityExpertDasboard extends ActivityBase {

     // this method is calling when particular user closes the screen. when I am in fragment screen..
    @Override
    protected void onChatInvitation(String msgKeys, String userId) {
        String msgKey = mApplication.returnEmptyStringIfNull(msgKeys);
        LogMessage.e("username",   mPreference.getStringFromPreference(Constants.CLOSE_CHAT_USERNAME));
        if (userId.equalsIgnoreCase(mPreference.getStringFromPreference(Constants.CLOSE_CHAT_USERNAME))) {
            if (msgKey.equalsIgnoreCase(Constants.CODE_CHAT_END)) {
                AAEDatabaseHelper.deleteUsername(mPreference.getStringFromPreference(Constants.CLOSE_CHAT_USERNAME));
                // I need to update in Fragment screen if this is triggered.
                }
        }
        super.onChatInvitation(msgKey, userId);
    }
}

FragmentExpertLiveChats:

public class FragmentExpertLiveChats extends Fragment {

    private List<LiveChatDetails> list;

     @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_chat_history, container,
                Constants.ATTACH_TO_ROOT);
     list = AAEDatabaseHelper.getLiveChatDetails(Constants.TABLE_LIVE_CHAT);
    }

    @Override
    public void onStart() {
        LogMessage.e("onStart", "onStart");
        super.onStart();
        updateUI();
    }


}

如果电话在 FragmentExpertLiveChat 屏幕中没有执行任何操作,并且如果活动调用中的方法,如何更新该行?我需要使用广播接收器吗?如果是,在哪里以及如何?

4

1 回答 1

2

为此,以及更多需要在不同组件之间进行通信的情况,我建议使用EventBus。它的用法很简单:

  1. 定义事件:public class MessageEvent { /* Additional fields if needed */}

  2. 准备订阅者注册您的订阅者(在您的 onCreate 或构造函数中):eventBus.register(this);

声明您的订阅方法:@Subscribe public void onEvent(AnyEventType event) {/* Do something */};

  1. 发布事件:eventBus.post(event);

之后别忘了注销。我建议您在开始/停止或暂停/恢复中进行注册/取消注册,或者,如果是碎片,则附加/分离。

在您的情况下,在 Fragment 和 Activity 中注册,当用户做他的事情时,发布事件。

于 2016-02-18T08:30:16.593 回答