BaseActivity
import android.os.Bundle;
import android.os.RemoteException;
import androidx.appcompat.app.AppCompatActivity;
public abstract class BaseActivity<V extends BaseView, P extends BasePresenter<V>> extends AppCompatActivity {
private P presenter;
private V view;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (this.presenter == null) {
try {
this.presenter = createPresenter();
} catch (RemoteException e) {
e.printStackTrace();
}
}
if (this.view == null) {
this.view = createview();
}
if (this.presenter != null && this.view != null) {
this.presenter.attachView(this.view);
}
}
@Override
protected void onDestroy() {
super.onDestroy();
if (this.presenter != null && this.view != null) {
this.presenter.detachView();
}
}
public P getPresenter() {
return presenter;
}
public abstract P createPresenter() throws RemoteException;
public abstract V createview();
}
BaseFragment
import android.os.Bundle;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
public abstract class BaseFragment<V extends BaseView, P extends BasePresenter<V>> extends Fragment {
private P presenter;
private V view;
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if (this.presenter == null) {
this.presenter = createPresenter();
}
if (this.view == null) {
this.view = createview();
}
if (this.presenter != null && this.view != null) {
this.presenter.attachView(this.view);
}
}
@Override
public void onDestroyView() {
super.onDestroyView();
if (this.presenter != null && this.view != null) {
this.presenter.detachView();
}
}
public P getPresenter() {
return presenter;
}
public abstract P createPresenter();
public abstract V createview();
}
BasePresenter
public abstract class BasePresenter<V extends BaseView> {
private V view;
public V getView() {
return view;
}
public void attachView(V spView) {
this.view = spView;
}
public void detachView() {
this.view = null;
}
}
BaseView
public interface BaseView {
}