BaseActivity都需要做些什么

来源:互联网 发布:轻薄笔记本电脑 知乎 编辑:程序博客网 时间:2024/04/29 08:31

BaseActivity

我们都知道,android里面有各种各样的activity,并且业务繁多的activity,其实有很多共同点,在这种情况下,我们很多时候在搭建框架时,都会思考baseactivity要有那些共性或者要限制子类做些什么。

不同之处

每个activity里面一般都需要初始化数据,视图,网络请求,实现监听,当然这几个方法是基本activity都有,但是每个activity实现的内容却不一样,所以这几个都是抽象方法,用abstract修饰,这样子类继承baseactivity的话,必须实现,这几个方法(注意:这几个方法的顺序)。

@Override    protected void onCreate(Bundle savedInstanceState) {     initView();//视图     initData();//初始化数据     sendServerRequest();//网络请求     setListener();//实现监听    }

相同之处

以下是提供我自己觉得写在父类BaseActivity里面会给后续的开发带来便利的方法,仅供参考,哈哈

    //节省findviewbyid的写法    public <T> T find(int id) {        return (T) findViewById(id);    }
    // 节省findviewbyid的写法,view是指定布局    public <T> T find(View view ,int id) {        return (T) view.findViewById(id);    }
    //Activity之间的跳转    public void redirect(Class clazz,Bundle bundle){        Intent intent = new Intent(this,clazz);        if (bundle!=null) {            intent.putExtras(bundle);        }        startActivity(intent);        overridePendingTransition(R.anim.view_push_left_in, R.anim.view_push_left_out);//动画    }
    //土司,记得用优化的土司,不然用户体验不好    public void showToast(String tips){        ToastUtils2.showToast(this, tips);    }
//返回,一般顶部栏返回的时候,去调用    public void back() {        finish();        overridePendingTransition(R.anim.view_push_right_in,                R.anim.view_push_right_out);    }
    /**     * 显示加载对话框     */    public void showMyDialog() {        showMyDialog("加载数据中···");    }    public void showMyDialog(final String text) {        runOnUiThread(new Runnable() {            @Override            public void run() {                if (progressDialog == null) {                    progressDialog = new Dialog(BaseActivity.this,                            R.style.progress_dialog);                    progressDialog.setContentView(R.layout.dialog_loading);                    // progressDialog.setCancelable(true);                    progressDialog.setCanceledOnTouchOutside(false);                    progressDialog.getWindow().setBackgroundDrawableResource(                            android.R.color.transparent);                    TextView msg = (TextView) progressDialog                            .findViewById(R.id.id_tv_loadingmsg);                    msg.setText(text);                }                progressDialog.show();            }        });    }
    /**     * 隐藏加载对话框     */    public void dismissMyDialog() {        runOnUiThread(new Runnable() {            @Override            public void run() {                if (progressDialog != null) {                    progressDialog.dismiss();                }            }        });    }
    /**     * 显示进度条     */    public void showProgressDialog() {        runOnUiThread(new Runnable() {            @Override            public void run() {                if (mProgressDialog == null) {                    mProgressDialog = new ProgressDialog(mContext);                    mProgressDialog.setMessage("正在加载,请稍候···");                    mProgressDialog                            .setProgressStyle(ProgressDialog.STYLE_SPINNER);                    mProgressDialog.setCancelable(true);                }                mProgressDialog.show();            }        });    }    /**     * 隐藏进度条     */    public void dismissProgressDialog() {        runOnUiThread(new Runnable() {            @Override            public void run() {                if (mProgressDialog != null) {                    mProgressDialog.dismiss();                }            }        });    }
0 0
原创粉丝点击