如何在片段屏幕 android 中更新 activity 方法?
how to update activity method in fragment screen android?
我在片段 activity 中有方法,如果该方法触发,我需要更新片段 listView。我正在处理数据库。我正在清除特定用户的数据库,我将更新片段。
问题是:如果用户在同一个屏幕上意味着如何在片段 activity 方法触发时更新片段列表视图?它仅在我需要返回 activity 并再次需要进入同一屏幕时有效。
代码如下:
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();
}
}
如果 phone 在 FragmentExpertLiveChat 屏幕中没有执行任何操作,如果调用 activity 中的方法,如何更新行?我需要使用广播接收器吗?如果是,在哪里以及如何?
为此,以及更多需要在不同组件之间进行通信的情况,我建议使用 EventBus。它的用法很简单:
Define events: public class MessageEvent { /* Additional fields if
needed */
}
Prepare subscribers Register your subscriber (in your onCreate or in a
constructor): eventBus.register(this);
Declare your subscribing method: @Subscribe public void
onEvent(AnyEventType event) {/* Do something */};
- Post events:
eventBus.post(event);
之后不要忘记注销。我建议你在 start/stop 或 pause/resume 中做 registration/unregistration,或者,如果是片段,attach/dettach.
在你的情况下,在 Fragment 中注册,在 Activity 中,当用户做他的事情时,post 事件。
我在片段 activity 中有方法,如果该方法触发,我需要更新片段 listView。我正在处理数据库。我正在清除特定用户的数据库,我将更新片段。
问题是:如果用户在同一个屏幕上意味着如何在片段 activity 方法触发时更新片段列表视图?它仅在我需要返回 activity 并再次需要进入同一屏幕时有效。
代码如下:
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();
}
}
如果 phone 在 FragmentExpertLiveChat 屏幕中没有执行任何操作,如果调用 activity 中的方法,如何更新行?我需要使用广播接收器吗?如果是,在哪里以及如何?
为此,以及更多需要在不同组件之间进行通信的情况,我建议使用 EventBus。它的用法很简单:
Define events:
public class MessageEvent { /* Additional fields if needed */
}Prepare subscribers Register your subscriber (in your onCreate or in a constructor):
eventBus.register(this);
Declare your subscribing method:
@Subscribe public void onEvent(AnyEventType event) {/* Do something */};
- Post events:
eventBus.post(event);
之后不要忘记注销。我建议你在 start/stop 或 pause/resume 中做 registration/unregistration,或者,如果是片段,attach/dettach.
在你的情况下,在 Fragment 中注册,在 Activity 中,当用户做他的事情时,post 事件。