Android继承BaseActivity的onCreate方法及代码翻译与技术问询
没问题,我来帮你梳理清楚这个问题,包括代码翻译和继承BaseActivity中onCreate方法的具体实现:
关于继承BaseActivity的onCreate方法及代码翻译说明
一、代码翻译(保留原代码及技术术语,补充中文注释)
// 抽象类BaseActivity,继承自AppCompatActivity并实现底部导航项选中监听接口 public abstract class BaseActivity extends AppCompatActivity implements BottomNavigationView.OnNavigationItemSelectedListener { // 受保护的BottomNavigationViewEx(第三方扩展底部导航控件)实例 protected BottomNavigationViewEx navigationView; // 重写Activity的onCreate生命周期方法 @Override protected void onCreate(Bundle savedInstanceState) { // 调用父类的onCreate方法,完成Activity基础初始化 super.onCreate(savedInstanceState); // 设置当前Activity的布局,布局ID由抽象方法getContentViewId()提供 setContentView(getContentViewId()); // 通过ID获取底部导航视图实例 navigationView = findViewById(R.id.bnve); // 设置底部导航项选中事件的监听器为当前Activity navigationView.setOnNavigationItemSelectedListener(this); // 禁用底部导航的切换动画 navigationView.enableAnimation(false); // 禁用底部导航的移位模式(代码片段此处未完整,推测是传入布尔值如false) navigationView.enableShiftingMode(fa... } }
二、正确继承BaseActivity的onCreate方法的步骤
要基于这个BaseActivity开发业务页面,你需要按以下步骤操作:
- 创建业务Activity类,继承自
BaseActivity - 实现抽象方法
getContentViewId(),返回当前Activity对应的布局资源ID - 如果需要扩展初始化逻辑,必须先调用
super.onCreate(savedInstanceState),再添加自定义代码,示例如下:
public class HomeActivity extends BaseActivity { @Override protected int getContentViewId() { // 返回HomeActivity的布局ID return R.layout.activity_home; } @Override protected void onCreate(Bundle savedInstanceState) { // 先调用父类onCreate,完成底部导航等基础控件的初始化 super.onCreate(savedInstanceState); // 这里添加当前Activity专属的初始化操作 initCustomViews(); loadPageData(); } private void initCustomViews() { // 初始化页面内的自定义控件 } private void loadPageData() { // 加载页面所需的数据 } // 必须实现底部导航项选中的回调方法 @Override public boolean onNavigationItemSelected(@NonNull MenuItem item) { // 根据选中的导航项ID处理对应逻辑 switch (item.getItemId()) { case R.id.nav_home: // 处理首页选中逻辑 return true; case R.id.nav_profile: // 处理个人中心选中逻辑 return true; default: return false; } } }
三、关键注意点
BaseActivity是抽象类,不能直接实例化,必须通过子类继承使用- 子类重写
onCreate时,一定要优先调用父类的super.onCreate(savedInstanceState),否则会导致底部导航等基础组件初始化失败 BottomNavigationViewEx是第三方扩展的底部导航控件,需确保项目已引入对应的依赖(一般是com.ittianyu:BottomNavigationViewEx)
内容的提问来源于stack exchange,提问作者user9657700
相关产品推荐
相关产品推荐

