添加菜单栏Home按钮点击后的主页跳转功能。
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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());
|
||||||
|
|||||||
@@ -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 浏览器Fragment(Java 7 语法完整版)
|
* @Describe 浏览器Fragment(Java 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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user