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.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() 配置完成");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -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"
|
||||||
|
|||||||
Reference in New Issue
Block a user