0

フラグメント アクティビティにメソッドがあり、そのメソッドがトリガーされる場合は、フラグメント listView を更新する必要があります。データベースを扱っています。特定のユーザーのデータベースをクリアしている場所で、フラグメントを更新します。

問題は、ユーザーが同じ画面にいる場合、フラグメントアクティビティメソッドがトリガーされた場合にフラグメントリストビューを更新する方法ですか? アクティビティに戻る必要があり、もう一度同じ画面に戻る必要がある場合にのみ機能します。

コードは次のとおりです。

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);
    }
}

FragmentExpertLiveChat:

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);

その後、登録を解除することを忘れないでください。開始/停止または一時停止/再開で登録/登録解除を行うか、フラグメントの場合はアタッチ/デタッチすることをお勧めします。

あなたの場合、フラグメントに登録し、アクティビティに登録し、ユーザーが自分のことをしたときにイベントを投稿します。

于 2016-02-18T08:30:16.593 に答える