BaseActivity的簡單封裝

BaseActivity

public abstract class BaseActivity extends AppCompatActivity {

    protected Intent intent;
    protected Constant CONSTANT;
    protected boolean isTranslucent = false;
    private ActionBar actionBar;

    protected abstract int ContentView();

    protected abstract void init(Bundle savedInstanceState);

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(ContentView());
        ButterKnife.bind(this);
        intent = new Intent();
        CONSTANT = Constant.getConstant();
        init(savedInstanceState);
        if (isTranslucent) getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
    }

    protected void ChangeActivity(Class<?> cls) {
        intent.setClass(this, cls);
        startActivity(intent);
    }

    protected void ChangeActivity(Class<?> cls, String str) {
        intent.setClass(this, cls);
        intent.putExtra("STRING", str);
        startActivity(intent);
    }

    protected void ChangeActivity(Class<?> cls, int i) {
        intent.setClass(this, cls);
        intent.putExtra("INT", i);
        startActivity(intent);
    }

    protected void toast(String content) {
        try {
            Snackbar.make(findViewById(R.id.layout_container), content, Snackbar.LENGTH_SHORT).show();
        } catch (Exception e) {
            Toast.makeText(this, content, Toast.LENGTH_SHORT).show();
        }
    }

    protected void toast(int code) {
        String text = "";
        switch (code) {
            case 400:
                text = CONSTANT.ERROR_CODE_REQUEST_FAILURE_TEXT;
                break;
            case 401:
                text = CONSTANT.ERROR_CODE_REQUEST_ERROR_TEXT;
                break;
            case 402:
                text = CONSTANT.ERROR_CODE_CONTENT_EMPTY_TEXT;
                break;
            case 403:
                text = CONSTANT.ERROR_CODE_NOT_MATCH_TEXT;
                break;
            case 404:
                text = CONSTANT.ERROR_CODE_NO_DATA_TEXT;
                break;
            default:
                text = CONSTANT.ERROR_CODE_NO_SUCH_ERROR_CODE;
        }
        toast(text);
    }

    protected void initToolBar(Toolbar toolbar, boolean isCanBack) {
        toolbar.setNavigationIcon(R.mipmap.icon_back);
        setSupportActionBar(toolbar);
        actionBar = getSupportActionBar();
        actionBar.setDisplayHomeAsUpEnabled(isCanBack);
    }

    protected void initToolBar(Toolbar toolbar, int title, boolean isCanBack) {
        toolbar.setNavigationIcon(R.mipmap.icon_back);
        toolbar.setTitle(title);
        setSupportActionBar(toolbar);
        actionBar = getSupportActionBar();
        actionBar.setDisplayHomeAsUpEnabled(isCanBack);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                finish();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }
}

isTranslucent 用來判斷是否開啓沉浸式狀態欄。試用ButterKnife註解代替繁瑣的fidViewById。封裝好Activity跳轉,打印toast,以及初始化toolbar的基本方法。

public class DemoActivity extends BaseActivity {
    @Override
    protected int ContentView() {
        return 0;
    }

    @Override
    protected void init(Bundle savedInstanceState) {

    }
}

使用時在ContentView方法中直接返回佈局id即可。然後直接在init方法進行相關的初始化操作即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章