使用BaseActivity模板类实现活动的便捷写法。

版权声明:https://blog.csdn.net/petterp https://blog.csdn.net/petterp/article/details/88924268

在以前的省赛代码中曾看见过 Activity的抽象模板类,上次在实际使用时,使用了单Activity+多Fragment来实现需求,也简单写了一个Fragment的模板类。昨天在比赛中,比赛的基类使用了 BaseActivity 实现抽象模板类。所以做个记录吧。

实现的写法很简单。附下面代码

模板类的写法,具体注释一看就懂

public abstract class BaseActivity extends FragmentActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(getLayoutId());
        initView();
        initData();
        TextView title=findViewById(R.id.title);
        title.setText(getLayoutTitle());
        findViewById(R.id.back).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                onAfter();
            }
        });
    }
    //对应的布局文件
    protected abstract int getLayoutId();
    //初始化数据
    protected abstract void initData();
    //点击返回图标处理事件
    protected  abstract void onAfter();
    //初始化控件
    protected  abstract void initView();
    //页面标题
    protected abstract  String getLayoutTitle();
}

子活动的写法。

public class MainActivity extends BaseActivity {
    
    @Override
    protected int getLayoutId() {
        return R.layout.activity_main;
    }

    @Override
    protected void initData() {

    }

    @Override
    protected void onAfter() {

    }

    @Override
    protected void initView() {
        
    }

    @Override
    protected String getLayoutTitle() {
        return "主界面";
    }
}

不过为什么叫模板类呢?

abstart 更多的是反映一种模板效果,而接口反映的是某种方法。

这里解释为什么BaseActivity要继承自FragmentActivity?

可以看见AppCompatActivity是继承于FragmentActivity.

FragmentActivity 继承自Activity,用来解决Android 3.0之前无法使用Fragment的问题,所以在使用的时候需要导入android-support-v4.jar兼容包,同时继承 FragmentActivity,这样在Activity中就能嵌入Fragment来实现你想要的布局效果。 

而AppCompatActivity 继承自FragmentActivity,支持ActionBar,同时对 MD 风格支持的更好.

详细的解释可以参阅以下博客:

https://www.jianshu.com/p/9d590c478828

猜你喜欢

转载自blog.csdn.net/petterp/article/details/88924268
今日推荐