mirror of
https://gitea.winboll.cc/ZhanGSKen/MyWinBoLL.git
synced 2026-08-14 05:27:10 +08:00
fix(AboutActivity): 修复ClassCastException和NullPointerException崩溃问题
1. 修复Toolbar类型转换异常: - 将Toolbar变量改为ASupportToolbar类型 - 添加类型检查和错误处理 - 在布局文件中明确指定AppCompat主题 2. 修复AboutView空指针异常: - 添加null检查,避免崩溃 - 增强日志输出,便于问题定位 3. 代码优化: - 提升initToolbar()方法的健壮性 - 添加异常捕获和处理机制 - 确保即使组件加载失败也能继续执行后续流程 这些修改解决了AboutActivity启动时的两个关键崩溃问题,提升了应用的稳定性。
This commit is contained in:
@@ -2,10 +2,10 @@ package cc.winboll.studio.bytheway.activities;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import cc.winboll.studio.bytheway.MainActivity;
|
||||
import cc.winboll.studio.bytheway.R;
|
||||
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.models.APPInfo;
|
||||
import cc.winboll.studio.libappbase.views.AboutView;
|
||||
@@ -19,7 +19,7 @@ public class AboutActivity extends BaseWinBoLLActivity {
|
||||
|
||||
public static final String TAG = "AboutActivity";
|
||||
|
||||
private Toolbar mToolbar;
|
||||
private ASupportToolbar mToolbar;
|
||||
|
||||
@Override
|
||||
public String getTag() {
|
||||
@@ -35,27 +35,41 @@ public class AboutActivity extends BaseWinBoLLActivity {
|
||||
initToolbar();
|
||||
|
||||
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() {
|
||||
LogUtils.d(TAG, "initToolbar() 开始初始化");
|
||||
mToolbar = findViewById(R.id.toolbar);
|
||||
if (mToolbar == null) {
|
||||
View toolbarView = findViewById(R.id.toolbar);
|
||||
if (toolbarView == null) {
|
||||
LogUtils.e(TAG, "initToolbar() | Toolbar未找到");
|
||||
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);
|
||||
mToolbar.setSubtitle(getTag());
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
LogUtils.d(TAG, "导航栏 点击返回按钮");
|
||||
WinBoLLActivityManager.getInstance().resumeActivity(MainActivity.class);
|
||||
WinBoLLActivityManager.getInstance().finish(AboutActivity.this);
|
||||
}
|
||||
});
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
LogUtils.d(TAG, "导航栏 点击返回按钮");
|
||||
WinBoLLActivityManager.getInstance().resumeActivity(MainActivity.class);
|
||||
WinBoLLActivityManager.getInstance().finish(AboutActivity.this);
|
||||
}
|
||||
});
|
||||
LogUtils.d(TAG, "initToolbar() 配置完成");
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -21,7 +21,7 @@ public abstract class BaseWinBoLLActivity extends AppCompatActivity implements I
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
//AESThemeUtil.applyAppCompatTheme(this);
|
||||
AESThemeUtil.applyAppCompatTheme(this);
|
||||
mThemeType = AESThemeBean.getThemeStyleType(AESThemeUtil.getThemeTypeID(getApplicationContext()));
|
||||
setTheme(AESThemeUtil.getThemeTypeID(getApplicationContext()));
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
@@ -9,7 +9,9 @@
|
||||
<cc.winboll.studio.libaes.views.ASupportToolbar
|
||||
android:layout_width="match_parent"
|
||||
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
|
||||
android:layout_width="match_parent"
|
||||
|
||||
Reference in New Issue
Block a user