Fork me on GitHub

BaseActivity/BaseToolBarActivity

基类Activity的构建模板

BaseActivity

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71


public abstract class BaseActivity extends AppCompatActivity {

private Unbinder mUnbinder;

// protected BasePresenter mPresenter;

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

mUnbinder = ButterKnife.bind(this);

setTranslucentStatus();

initBundle(savedInstanceState);
// initPresenter();
initView();
initData();
}

protected void initPresenter() {
// mPresenter = getPresenter();
}
//
// protected BasePresenter getPresenter() {
// return null;
// }

protected void initBundle(Bundle savedInstanceState) {

}

protected void saveBundle(Bundle outState) {

}


protected abstract int getLayoutID();

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

@Override
protected void onDestroy() {
super.onDestroy();
if (mUnbinder != null) {
mUnbinder.unbind();
}
}

@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
saveBundle(outState);
// Logger.d("onSaveInstanceState");
}

protected void initView() {

}


protected void initData() {

}
}

BaseToolBarActivity

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52

public abstract class BaseToolBarActivity extends BaseActivity {



private Toolbar mToolBar;
//根布局
private LinearLayout mRootView = null;
//子Activity原布局
private View mContentView = null;


/**
* 根据子类传入的布局ID来获取View,在该View外面增加一个LL和ToolBar再setContentView
* @param layoutResID 子类重写BaseActivity的getLayoutID
*/
@Override
public void setContentView(int layoutResID) {
mContentView = LayoutInflater.from(this).inflate(layoutResID,null);
initDectorView();
super.setContentView(mRootView);
}


/**
* 初始化根布局
*/
private void initDectorView() {
mRootView = new LinearLayout(this);
mRootView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT));
mRootView.setOrientation(LinearLayout.VERTICAL);
initToolBar();
mRootView.addView(mToolBar);
mRootView.addView(mContentView);
}

/**
* 初始化ToolBar
*/
private void initToolBar() {
mToolBar = (Toolbar) getLayoutInflater().inflate(R.layout.layout_toolbar,mRootView,false);
setCustomToolbar(mToolBar);
}

/**
* 子类自行扩展设置属性
* @param toolbar
*/
protected abstract void setCustomToolbar(Toolbar toolbar);

}

BaseFragment

主要注意有个Bundle和setArguments的用法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
public abstract class BaseFragment extends Fragment {

protected LayoutInflater mInflater;
protected Context mContext;
protected View mRoot;
protected Bundle mBundle;//获取setArguments的值
protected Unbinder mUnbinder;

@Override
public void onAttach(Context context) {
mContext =context;
super.onAttach(context);
}



@Override
public void onDetach() {
mContext = null;
super.onDetach();

}

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mBundle = getArguments();
initBundle(mBundle);


}

@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);

}

@Override
public void onDestroy() {
super.onDestroy();
if(mUnbinder!=null){
mUnbinder.unbind();
}


}

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
mInflater = inflater;
mRoot = inflater.inflate(getLayoutId(),container,false);
mUnbinder = ButterKnife.bind(this,mRoot);

initWidget(mRoot);
initData();




return mRoot;
}




protected abstract int getLayoutId();

protected void initBundle(Bundle bundle) {

}

protected void initWidget(View root) {


}

protected void initData() {


}
}