Activity + Fragment + Service + Moxy

265
06 ноября 2017, 20:24

Вообщем есть приложение которое состоит из одного Activity и множества Fragment. В проекте используется MVP библиотека Moxy.

У меня есть Fragment чата (фрагмент переписки с другим юзером) и Websocket сервис который я привязываю к главной Activity.

Activity реализует интерфейс:

public interface WebsocketEventListener {
    void onMessage(String s);
}

который я потом передаю в WebsocketService после привязки, и таким способом я смогу получать сообщение в активити из сервиса.

Вопрос в том, каким образом мне передавать данные из Activity во Fragment'ты, и как это сделать правильно используя MVP элементы из библиотеки Moxy.

Щас главная Activity выглядит примерно так:

public class MainActivity extends MvpAppCompatActivity implements MainView , WebscoketListener{
    //...

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
    @Override
    protected void onStart() {
        super.onStart();
        // Bind to WebsocketService
        Intent intent = new Intent(this, WebscoketService.class);
        bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
    }

    private ServiceConnection mConnection = new ServiceConnection() {
        @Override
        public void onServiceConnected(ComponentName className, IBinder service) {
            LocalBinder binder = (LocalBinder) service;
            mService = binder.getService();
            mService.addListener(this);
        }
        @Override
        public void onServiceDisconnected(ComponentName arg0) {
        }
    };
    @Override
    public void onMessage(String message){
        //receive message from WebsocketService
    }
     @Override
    public void showChatFragment() {
        getSupportFragmentManager().beginTransaction()
                .replace(R.id.fragmentContainer, ChatFragment.getInstance(this.mainPresenter))
                .addToBackStack(ChatFragment.TAG)
                .commit();
    }
    //...
}
READ ALSO
При перемножении double вместо нулей пишется E

При перемножении double вместо нулей пишется E

Делаю небольшой калькулятор, и при тестировании заметил, что, например, при перемножении 5000 и 5000, получаю не 25000

253
В каком контейнере лучше хранить число, большее чем long?

В каком контейнере лучше хранить число, большее чем long?

У меня задача - уложить в какой-либо контейнер 30-ти значное число, что уже по определению больше чем LongMAX, которое всего 19-ти разрядное

256
Взаимодействие клиент-сервер Java

Взаимодействие клиент-сервер Java

Вопрос такойБыла одна прилага состоящая из нескольких jar файлов

288
Соединение посредством сокетов java android

Соединение посредством сокетов java android

Надо сделать наиболее простое соединение между телефоном Android и программой на ПК с помощью языка javaПытался многократно, прочитал множество...

318