添加菜单栏Home按钮点击后的主页跳转功能。
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
#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
|
||||
libraryProject=
|
||||
baseVersion=15.11
|
||||
publishVersion=15.11.5
|
||||
buildCount=17
|
||||
buildCount=20
|
||||
baseBetaVersion=15.11.6
|
||||
|
||||
@@ -2,6 +2,7 @@ package cc.winboll.studio.winboll;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.os.Message;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
@@ -100,7 +101,16 @@ public class MainActivity extends DrawerFragmentActivity implements IWinBoLLActi
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
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);
|
||||
} else if (item.getItemId() == R.id.item_log) {
|
||||
WinBoLLActivityManager.getInstance().startLogActivity(getApplicationContext());
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package cc.winboll.studio.winboll.fragments;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.os.Message;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
@@ -15,11 +17,12 @@ import androidx.annotation.Nullable;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import cc.winboll.studio.winboll.R;
|
||||
import cc.winboll.studio.winboll.views.WinBoLLView;
|
||||
|
||||
/**
|
||||
* @Author ZhanGSKen&豆包大模型<zhangsken@qq.com>
|
||||
* @Date 2025/11/27 11:09
|
||||
* @Describe 浏览器Fragment(Java 7 语法完整版)
|
||||
* 适配Java 7特性,移除Lambda/方法引用,兼容低版本Android系统
|
||||
* @Describe 浏览器Fragment(Java 7 语法完整版,新增Handler消息接收)
|
||||
* 适配Java 7特性,支持接收应用内消息(如MSG_HOMEPAGE跳转首页)
|
||||
*/
|
||||
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 WinBoLLView mWinBoLLView;
|
||||
|
||||
// ------------------- 新增:Handler 消息定义(应用内通信) -------------------
|
||||
// 消息标识:跳转首页(winboll.cc)
|
||||
public static final int MSG_HOMEPAGE = 1001;
|
||||
// 自定义Handler(接收应用内其他页面发送的消息)
|
||||
private Handler mBrowserHandler;
|
||||
|
||||
// 单例创建方法(Java 7 静态工厂模式)
|
||||
public static BrowserFragment newInstance() {
|
||||
return new BrowserFragment();
|
||||
@@ -49,6 +58,8 @@ public class BrowserFragment extends Fragment implements View.OnClickListener, W
|
||||
initEvents();
|
||||
// 初始化WinBoLLView
|
||||
initWinBoLLView();
|
||||
// ------------------- 新增:初始化Handler(关键) -------------------
|
||||
initHandler();
|
||||
return view;
|
||||
}
|
||||
|
||||
@@ -96,13 +107,36 @@ public class BrowserFragment extends Fragment implements View.OnClickListener, W
|
||||
mWinBoLLView.setProgressBar(mProgressBar);
|
||||
// 设置页面状态监听(this 实现 OnPageStatusListener)
|
||||
mWinBoLLView.setOnPageStatusListener(this);
|
||||
// 预加载默认页面(兼容Java 7 字符串拼接)
|
||||
//String defaultUrl = "https://www.baidu.com";
|
||||
String defaultUrl = "https://www.winboll.cc";
|
||||
// 预加载默认页面(winboll.cc 首页)
|
||||
String defaultUrl = "https://www.winboll.cc";
|
||||
mWinBoLLView.loadUrlSafe(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)
|
||||
*/
|
||||
@@ -196,6 +230,11 @@ public class BrowserFragment extends Fragment implements View.OnClickListener, W
|
||||
showToast("加载失败:" + errorMsg);
|
||||
}
|
||||
|
||||
// ------------------- 新增:对外提供Handler(供其他页面获取并发送消息) -------------------
|
||||
public Handler getBrowserHandler() {
|
||||
return mBrowserHandler;
|
||||
}
|
||||
|
||||
// ------------------- 生命周期管理(防止内存泄漏,Java 7 显式重写) -------------------
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
@@ -205,6 +244,11 @@ public class BrowserFragment extends Fragment implements View.OnClickListener, W
|
||||
mWinBoLLView.destroyWebView();
|
||||
mWinBoLLView = null;
|
||||
}
|
||||
// ------------------- 新增:移除Handler消息(关键,防止内存泄漏) -------------------
|
||||
if (mBrowserHandler != null) {
|
||||
mBrowserHandler.removeCallbacksAndMessages(null); // 清除所有消息和回调
|
||||
mBrowserHandler = null;
|
||||
}
|
||||
// 置空控件(帮助GC回收)
|
||||
mEtUrl = null;
|
||||
mBtnLoad = null;
|
||||
@@ -223,6 +267,11 @@ public class BrowserFragment extends Fragment implements View.OnClickListener, W
|
||||
mWinBoLLView.destroyWebView();
|
||||
mWinBoLLView = null;
|
||||
}
|
||||
// 再次清除Handler(双重保险)
|
||||
if (mBrowserHandler != null) {
|
||||
mBrowserHandler.removeCallbacksAndMessages(null);
|
||||
mBrowserHandler = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -11,5 +11,10 @@
|
||||
android:layout_height="wrap_content"
|
||||
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>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user