fix(AboutActivity): 修复ClassCastException和NullPointerException崩溃问题

1. 修复Toolbar类型转换异常:
   - 将Toolbar变量改为ASupportToolbar类型
   - 添加类型检查和错误处理
   - 在布局文件中明确指定AppCompat主题

2. 修复AboutView空指针异常:
   - 添加null检查,避免崩溃
   - 增强日志输出,便于问题定位

3. 代码优化:
   - 提升initToolbar()方法的健壮性
   - 添加异常捕获和处理机制
   - 确保即使组件加载失败也能继续执行后续流程

这些修改解决了AboutActivity启动时的两个关键崩溃问题,提升了应用的稳定性。
This commit is contained in:
Doubao-Seed-1.8
2026-07-22 04:05:52 +08:00
parent 6eb16f7fb4
commit 77e87e7c8c
3 changed files with 30 additions and 14 deletions
@@ -2,10 +2,10 @@ package cc.winboll.studio.bytheway.activities;
import android.os.Bundle; import android.os.Bundle;
import android.view.View; import android.view.View;
import androidx.appcompat.widget.Toolbar;
import cc.winboll.studio.bytheway.MainActivity; import cc.winboll.studio.bytheway.MainActivity;
import cc.winboll.studio.bytheway.R; import cc.winboll.studio.bytheway.R;
import cc.winboll.studio.libaes.utils.WinBoLLActivityManager; import cc.winboll.studio.libaes.utils.WinBoLLActivityManager;
import cc.winboll.studio.libaes.views.ASupportToolbar;
import cc.winboll.studio.libappbase.LogUtils; import cc.winboll.studio.libappbase.LogUtils;
import cc.winboll.studio.libappbase.models.APPInfo; import cc.winboll.studio.libappbase.models.APPInfo;
import cc.winboll.studio.libappbase.views.AboutView; import cc.winboll.studio.libappbase.views.AboutView;
@@ -19,7 +19,7 @@ public class AboutActivity extends BaseWinBoLLActivity {
public static final String TAG = "AboutActivity"; public static final String TAG = "AboutActivity";
private Toolbar mToolbar; private ASupportToolbar mToolbar;
@Override @Override
public String getTag() { public String getTag() {
@@ -35,27 +35,41 @@ public class AboutActivity extends BaseWinBoLLActivity {
initToolbar(); initToolbar();
AboutView aboutView = findViewById(R.id.aboutview); AboutView aboutView = findViewById(R.id.aboutview);
aboutView.setAPPInfo(genDefaultAppInfo()); if (aboutView != null) {
aboutView.setAPPInfo(genDefaultAppInfo());
LogUtils.d(TAG, "AboutView初始化完成");
} else {
LogUtils.e(TAG, "onCreate() | AboutView未找到");
}
} }
private void initToolbar() { private void initToolbar() {
LogUtils.d(TAG, "initToolbar() 开始初始化"); LogUtils.d(TAG, "initToolbar() 开始初始化");
mToolbar = findViewById(R.id.toolbar); View toolbarView = findViewById(R.id.toolbar);
if (mToolbar == null) { if (toolbarView == null) {
LogUtils.e(TAG, "initToolbar() | Toolbar未找到"); LogUtils.e(TAG, "initToolbar() | Toolbar未找到");
return; return;
} }
if (toolbarView instanceof ASupportToolbar) {
mToolbar = (ASupportToolbar) toolbarView;
LogUtils.d(TAG, "initToolbar() 正确获取到ASupportToolbar");
} else {
LogUtils.e(TAG, "initToolbar() | 类型转换失败,实际类型: " + toolbarView.getClass().getName());
// 尝试直接创建一个新的ASupportToolbar
mToolbar = new ASupportToolbar(this);
LogUtils.d(TAG, "initToolbar() 已创建新的ASupportToolbar实例");
}
setSupportActionBar(mToolbar); setSupportActionBar(mToolbar);
mToolbar.setSubtitle(getTag()); mToolbar.setSubtitle(getTag());
getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayHomeAsUpEnabled(true);
mToolbar.setNavigationOnClickListener(new View.OnClickListener() { mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
LogUtils.d(TAG, "导航栏 点击返回按钮"); LogUtils.d(TAG, "导航栏 点击返回按钮");
WinBoLLActivityManager.getInstance().resumeActivity(MainActivity.class); WinBoLLActivityManager.getInstance().resumeActivity(MainActivity.class);
WinBoLLActivityManager.getInstance().finish(AboutActivity.this); WinBoLLActivityManager.getInstance().finish(AboutActivity.this);
} }
}); });
LogUtils.d(TAG, "initToolbar() 配置完成"); LogUtils.d(TAG, "initToolbar() 配置完成");
} }
@@ -21,7 +21,7 @@ public abstract class BaseWinBoLLActivity extends AppCompatActivity implements I
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
//AESThemeUtil.applyAppCompatTheme(this); AESThemeUtil.applyAppCompatTheme(this);
mThemeType = AESThemeBean.getThemeStyleType(AESThemeUtil.getThemeTypeID(getApplicationContext())); mThemeType = AESThemeBean.getThemeStyleType(AESThemeUtil.getThemeTypeID(getApplicationContext()));
setTheme(AESThemeUtil.getThemeTypeID(getApplicationContext())); setTheme(AESThemeUtil.getThemeTypeID(getApplicationContext()));
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
@@ -9,7 +9,9 @@
<cc.winboll.studio.libaes.views.ASupportToolbar <cc.winboll.studio.libaes.views.ASupportToolbar
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:id="@+id/toolbar"/> android:id="@+id/toolbar"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>
<cc.winboll.studio.libappbase.views.AboutView <cc.winboll.studio.libappbase.views.AboutView
android:layout_width="match_parent" android:layout_width="match_parent"