添加菜单栏Home按钮点击后的主页跳转功能。

This commit is contained in:
2025-12-05 21:00:53 +08:00
parent 3dba7b1e45
commit 1e7d8ed9b1
4 changed files with 72 additions and 8 deletions

View File

@@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle #Created by .winboll/winboll_app_build.gradle
#Fri Dec 05 11:57:23 GMT 2025 #Fri Dec 05 12:58:53 GMT 2025
stageCount=6 stageCount=6
libraryProject= libraryProject=
baseVersion=15.11 baseVersion=15.11
publishVersion=15.11.5 publishVersion=15.11.5
buildCount=17 buildCount=20
baseBetaVersion=15.11.6 baseBetaVersion=15.11.6

View File

@@ -2,6 +2,7 @@ package cc.winboll.studio.winboll;
import android.app.Activity; import android.app.Activity;
import android.os.Bundle; import android.os.Bundle;
import android.os.Message;
import android.view.Menu; import android.view.Menu;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.View; import android.view.View;
@@ -100,7 +101,16 @@ public class MainActivity extends DrawerFragmentActivity implements IWinBoLLActi
@Override @Override
public boolean onOptionsItemSelected(MenuItem item) { public boolean onOptionsItemSelected(MenuItem item) {
int nItemId = item.getItemId(); int nItemId = item.getItemId();
if (item.getItemId() == R.id.item_settings) { if(item.getItemId() == R.id.item_home) {
// 关键获取BrowserFragment的Handler
if (mBrowserFragment != null && mBrowserFragment.getBrowserHandler() != null) {
// 创建消息Java 7 显式创建Message
Message msg = Message.obtain();
msg.what = BrowserFragment.MSG_HOMEPAGE; // 指定消息标识
// 发送消息可携带数据如msg.obj = "额外参数";
mBrowserFragment.getBrowserHandler().sendMessage(msg);
}
}if (item.getItemId() == R.id.item_settings) {
WinBoLLActivityManager.getInstance().startWinBoLLActivity(getApplicationContext(), SettingsActivity.class); WinBoLLActivityManager.getInstance().startWinBoLLActivity(getApplicationContext(), SettingsActivity.class);
} else if (item.getItemId() == R.id.item_log) { } else if (item.getItemId() == R.id.item_log) {
WinBoLLActivityManager.getInstance().startLogActivity(getApplicationContext()); WinBoLLActivityManager.getInstance().startLogActivity(getApplicationContext());

View File

@@ -1,6 +1,8 @@
package cc.winboll.studio.winboll.fragments; package cc.winboll.studio.winboll.fragments;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
@@ -15,11 +17,12 @@ import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import cc.winboll.studio.winboll.R; import cc.winboll.studio.winboll.R;
import cc.winboll.studio.winboll.views.WinBoLLView; import cc.winboll.studio.winboll.views.WinBoLLView;
/** /**
* @Author ZhanGSKen&豆包大模型<zhangsken@qq.com> * @Author ZhanGSKen&豆包大模型<zhangsken@qq.com>
* @Date 2025/11/27 11:09 * @Date 2025/11/27 11:09
* @Describe 浏览器FragmentJava 7 语法完整版) * @Describe 浏览器FragmentJava 7 语法完整版新增Handler消息接收
* 适配Java 7特性移除Lambda/方法引用兼容低版本Android系统 * 适配Java 7特性支持接收应用内消息如MSG_HOMEPAGE跳转首页
*/ */
public class BrowserFragment extends Fragment implements View.OnClickListener, WinBoLLView.OnPageStatusListener { public class BrowserFragment extends Fragment implements View.OnClickListener, WinBoLLView.OnPageStatusListener {
@@ -33,6 +36,12 @@ public class BrowserFragment extends Fragment implements View.OnClickListener, W
private ProgressBar mProgressBar; private ProgressBar mProgressBar;
private WinBoLLView mWinBoLLView; private WinBoLLView mWinBoLLView;
// ------------------- 新增Handler 消息定义(应用内通信) -------------------
// 消息标识跳转首页winboll.cc
public static final int MSG_HOMEPAGE = 1001;
// 自定义Handler接收应用内其他页面发送的消息
private Handler mBrowserHandler;
// 单例创建方法Java 7 静态工厂模式) // 单例创建方法Java 7 静态工厂模式)
public static BrowserFragment newInstance() { public static BrowserFragment newInstance() {
return new BrowserFragment(); return new BrowserFragment();
@@ -49,6 +58,8 @@ public class BrowserFragment extends Fragment implements View.OnClickListener, W
initEvents(); initEvents();
// 初始化WinBoLLView // 初始化WinBoLLView
initWinBoLLView(); initWinBoLLView();
// ------------------- 新增初始化Handler关键 -------------------
initHandler();
return view; return view;
} }
@@ -96,13 +107,36 @@ public class BrowserFragment extends Fragment implements View.OnClickListener, W
mWinBoLLView.setProgressBar(mProgressBar); mWinBoLLView.setProgressBar(mProgressBar);
// 设置页面状态监听this 实现 OnPageStatusListener // 设置页面状态监听this 实现 OnPageStatusListener
mWinBoLLView.setOnPageStatusListener(this); mWinBoLLView.setOnPageStatusListener(this);
// 预加载默认页面(兼容Java 7 字符串拼接 // 预加载默认页面(winboll.cc 首页
//String defaultUrl = "https://www.baidu.com"; String defaultUrl = "https://www.winboll.cc";
String defaultUrl = "https://www.winboll.cc";
mWinBoLLView.loadUrlSafe(defaultUrl); mWinBoLLView.loadUrlSafe(defaultUrl);
mEtUrl.setText(defaultUrl); mEtUrl.setText(defaultUrl);
} }
// ------------------- 新增初始化Handler接收应用内消息 -------------------
private void initHandler() {
// Java 7 匿名内部类实现Handler主线程中创建用于更新UI
mBrowserHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
// 根据消息标识处理不同逻辑
switch (msg.what) {
case MSG_HOMEPAGE:
// 处理“跳转首页”消息加载winboll.cc
String homeUrl = "https://www.winboll.cc";
mWinBoLLView.loadUrlSafe(homeUrl);
mEtUrl.setText(homeUrl);
showToast("已跳转至首页");
break;
// 可扩展添加其他消息标识如MSG_OPEN_URL、MSG_REFRESH等
default:
break;
}
}
};
}
/** /**
* 点击事件处理Java 7 switch-case 语句无增强switch * 点击事件处理Java 7 switch-case 语句无增强switch
*/ */
@@ -196,6 +230,11 @@ public class BrowserFragment extends Fragment implements View.OnClickListener, W
showToast("加载失败:" + errorMsg); showToast("加载失败:" + errorMsg);
} }
// ------------------- 新增对外提供Handler供其他页面获取并发送消息 -------------------
public Handler getBrowserHandler() {
return mBrowserHandler;
}
// ------------------- 生命周期管理防止内存泄漏Java 7 显式重写) ------------------- // ------------------- 生命周期管理防止内存泄漏Java 7 显式重写) -------------------
@Override @Override
public void onDestroyView() { public void onDestroyView() {
@@ -205,6 +244,11 @@ public class BrowserFragment extends Fragment implements View.OnClickListener, W
mWinBoLLView.destroyWebView(); mWinBoLLView.destroyWebView();
mWinBoLLView = null; mWinBoLLView = null;
} }
// ------------------- 新增移除Handler消息关键防止内存泄漏 -------------------
if (mBrowserHandler != null) {
mBrowserHandler.removeCallbacksAndMessages(null); // 清除所有消息和回调
mBrowserHandler = null;
}
// 置空控件帮助GC回收 // 置空控件帮助GC回收
mEtUrl = null; mEtUrl = null;
mBtnLoad = null; mBtnLoad = null;
@@ -223,6 +267,11 @@ public class BrowserFragment extends Fragment implements View.OnClickListener, W
mWinBoLLView.destroyWebView(); mWinBoLLView.destroyWebView();
mWinBoLLView = null; mWinBoLLView = null;
} }
// 再次清除Handler双重保险
if (mBrowserHandler != null) {
mBrowserHandler.removeCallbacksAndMessages(null);
mBrowserHandler = null;
}
} }
} }

View File

@@ -11,5 +11,10 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:id="@+id/toolbar"/> android:id="@+id/toolbar"/>
<cc.winboll.studio.libaes.views.ADsControlView
android:id="@+id/ads_control_view"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout> </LinearLayout>