Skip to content

Commit

Permalink
Merge pull request #14 from boostcampth/feature/PI01-base_setting
Browse files Browse the repository at this point in the history
request to merge 'feature/PI01-base_setting' branch into 'develop' branch
  • Loading branch information
ch-Yoon authored Jan 30, 2019
2 parents 6fed576 + 610dac2 commit 85a91ec
Show file tree
Hide file tree
Showing 4 changed files with 119 additions and 2 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
package com.aone.menurandomchoice.views.base;

import android.content.Context;
import android.os.Bundle;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.databinding.ViewDataBinding;

public abstract class BaseActivity<B extends ViewDataBinding, V extends BaseContract.View, P extends BaseContract.Presenter<V>>
extends AppCompatActivity implements BaseContract.View {

protected B dataBinding;
protected P presenter;


@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setUp();
attachViewToPresenter();
}

@Override
protected void onStart() {
attachViewToPresenter();

super.onStart();
}

@Override
protected void onSaveInstanceState(@NonNull Bundle outState) {
detachViewFromPresenter();
onSaveInstanceStateToBundle(outState);

super.onSaveInstanceState(outState);
}

@Override
protected void onStop() {
detachViewFromPresenter();

super.onStop();
}

@Override
protected void onDestroy() {
detachViewFromPresenter();

super.onDestroy();
}


private void setUp() {
dataBinding = setUpDataBinding();
presenter = setUpPresenter();
}


@NonNull
@Override
public Context getAppContext() {
return getApplicationContext();
}


private void attachViewToPresenter() {
if(presenter != null && !presenter.isAttachView()) {
presenter.attachView(getView());
}
}

private void detachViewFromPresenter() {
if(presenter != null && presenter.isAttachView()) {
presenter.detachView();
}
}


@NonNull
abstract protected B setUpDataBinding();

@NonNull
abstract protected P setUpPresenter();

@NonNull
abstract protected V getView();

abstract protected void onSaveInstanceStateToBundle(@NonNull Bundle outState);

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package com.aone.menurandomchoice.views.base;

import android.content.Context;


public interface BaseContract {

interface View {

Context getAppContext();

}

interface Presenter<V extends BaseContract.View> {

void attachView(V view);

void detachView();

boolean isAttachView();

}

}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.aone.menurandomchoice.views.adapter;
package com.aone.menurandomchoice.views.base.adapter;


import androidx.annotation.NonNull;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.aone.menurandomchoice.views.adapter;
package com.aone.menurandomchoice.views.base.adapter;

import androidx.annotation.NonNull;

Expand Down

0 comments on commit 85a91ec

Please sign in to comment.