Activity的基類
代碼中我寫:可以沒(méi)有的 惜浅,代表上面的紅框税稼,一般不需要身害,也可不寫,寫上也沒(méi)關(guān)系
把其對(duì)應(yīng)的布局設(shè)置為空白缚够;
![0YEDW1A{WNK7({CO5@)2]1O.png](http://upload-images.jianshu.io/upload_images/5710864-1e50905184f70917.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
public abstract class BaseActivity extends AppCompatActivity {
/**
* ActionBar上的標(biāo)題
*/
private TextView mTitle;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
init();
super.setContentView(R.layout.layout_root);
setContentView(getContentView()); //當(dāng)沒(méi)有是()里為getLayoutId
initActionBar(isShowActionBar());
initView();
initData();
setListaner();
}
//***************可以沒(méi)有***************************
/**
* 初始化Actionbar
*
* @param showActionBar :是否顯示ActionBar
*/
private void initActionBar(boolean showActionBar) {
RelativeLayout mActionBar = getViewById(R.id.relay_root_actionbar);
if (showActionBar) {
mTitle = getViewById(R.id.tv_root_title);
ImageView image = getViewById(R.id.img_root_title);
image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();//返回上一界面
}
});
} else {//不顯示
mActionBar.setVisibility(View.GONE);
}
}
//***************可以沒(méi)有***************************
/**
* 是否顯示ActionBar
*
* @return true:表示顯示
*/
protected abstract boolean isShowActionBar();
//***************可以也沒(méi)有***************************
private View getContentView() {
LinearLayout mRoot = getViewById(R.id.lin_root);
//將子類的布局解析成View
View subView = LayoutInflater.from(this).inflate(getLayoutId(), null);
//設(shè)置大小
subView.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT));
mRoot.addView(subView);
return mRoot;
}
protected void init() {
}
/**
* 設(shè)置監(jiān)聽(tīng)
*/
protected void setListaner() {
}
/**
* 初始化數(shù)據(jù)
*/
protected abstract void initData();
/**
* 初始化視圖
*/
protected abstract void initView();
/**
* 設(shè)置布局ID
*
* @return
*/
protected abstract int getLayoutId();
/**
* 以Toast的方式顯示文本信息
*
* @param text
*/
protected void showToast(String text) {
Toast.makeText(this, text, Toast.LENGTH_SHORT).show();
}
/**
* 啟動(dòng)一個(gè)activty
*
* @param cls
*/
protected void openActivity(Class<? extends BaseActivity> cls) {
startActivity(new Intent(this, cls));
}
/**
* 啟動(dòng)activity
*
* @param cls
* @param isFinish :是否關(guān)閉當(dāng)前的Activity
*/
protected void openActivity(Class<? extends BaseActivity> cls, boolean isFinish) {
startActivity(new Intent(this, cls));
if (isFinish) finish();
}
/**
* 通過(guò)ViewID找View
*
* @param viewId
* @param <T>
* @return
*/
protected <T extends View> T getViewById(@IdRes int viewId) {
return (T) findViewById(viewId);
}
//***************可以沒(méi)有***************************
/**
* 設(shè)置標(biāo)題
*
* @param text
*/
protected void setTitle(String text) {
mTitle.setText(text);
}
}
新建個(gè)App類幔妨,用于承接上下文的(記住APP這個(gè)類必須要在清單文件中注冊(cè))
記住APP這個(gè)類必須要在清單文件中注冊(cè)
public class App extends Application{
public static App appContext;
@Override
public void onCreate() {
super.onCreate();
appContext = this;
}
}