Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public interface MvpView {
- }
- public abstract class BaseActivity<T extends MvpView, K extends Presenter<T>> extends AppCompatActivity {
- private K presenter;
- protected abstract @NonNull T getView();
- protected abstract void inject();
- @CallSuper
- @Override
- protected void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- inject();
- presenter.attach(getView());
- }
- @CallSuper
- @Override
- public void onDestroy () {
- presenter.detach(getView());
- super.onDestroy();
- }
- //presenter
- public K getPresenter () {
- return presenter;
- }
- @Inject
- public void setPresenter (K presenter) {
- this.presenter = presenter;
- }
- }
- public abstract class Presenter<T extends MvpView> {
- protected T view;
- public void attach (T view) {
- this.view = view;
- }
- public void detach (T view) {
- if (this.view == view) {
- this.view = null;
- }
- }
- }
- public class MainActivity extends BaseActivity<MainPresenter.View, MainPresenter> implements MainPresenter.View, View.OnClickListener {
- @NonNull
- @Override
- protected MainPresenter.View getView() {
- return this;
- }
- @Override
- protected void inject() {
- DaggerMainComponent
- .builder()
- .build()
- .inject(this);
- }
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- findViewById(R.id.do_smth_btn).setOnClickListener(this);
- }
- //View.OnClickListener
- @Override
- public void onClick(View v) {
- switch (v.getId()) {
- case R.id.do_smth_btn: {
- getPresenter().doSmth();
- break;
- }
- }
- }
- @Override
- public void onSmthDone(String string) {
- Toast.makeText(this, "result - " + string, Toast.LENGTH_LONG).show();
- }
- }
- @Singleton
- public class MainPresenter extends Presenter<MainPresenter.View> {
- @Inject
- public MainPresenter () {
- }
- public void doSmth() {
- view.onSmthDone("done");
- }
- public interface View extends MvpView {
- void onSmthDone(String string);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement