Commit b41bea83 by amateur

1

1 parent 96ad7691
......@@ -8,10 +8,9 @@ import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import com.polysoft.nafmii.R;
import com.polysoft.nafmii.activity.home.ModulesFragmentMgr;
import com.polysoft.nafmii.bean.MenuBean;
import com.polysoft.nafmii.enums.ModulesEnum;
import com.polysoft.nafmii.activity.home.ModulesFragmentMgr;
import com.polysoft.nafmii.utils.SpUtils;
import java.util.HashMap;
import java.util.Iterator;
......@@ -52,12 +51,12 @@ public class HomeActivity extends WebviewActivity implements View.OnClickListene
private void initHomeModule() {
FragmentManager fragmentManager = super.getSupportFragmentManager();
int containerId = R.id.home_container_framelayout;
this.modulesMgr = new ModulesFragmentMgr(fragmentManager, containerId);
this.modulesMgr = new ModulesFragmentMgr(this, containerId);
this.modulesMgr.addChangeModuleLsitener(this);
this.modulesMgr.showInitFragment(new ModulesEnum[]{
ModulesEnum.HOME, ModulesEnum.MEMBER,
ModulesEnum.LEARN, ModulesEnum.MY
}, getIntent().getStringExtra(ModulesEnum.HOME.name));
});
}
......
package com.polysoft.nafmii.activity.home;
import android.app.Activity;
import android.content.Intent;
import android.text.TextUtils;
import com.polysoft.nafmii.bean.MenuBean;
import com.polysoft.nafmii.constants.Constants;
import com.polysoft.nafmii.constants.JsApi;
import com.polysoft.nafmii.enums.ModulesEnum;
import com.polysoft.nafmii.webview.IWebview;
import java.util.HashMap;
import java.util.Map;
public class ModuleUrlHandle {
private Map<String, IModuleHandle> handleMap = new HashMap<>();
private Activity activity;
ModuleUrlHandle(Activity activity) {
this.activity = activity;
}
public IModuleHandle getModuleHandle(ModulesEnum module) {
return new ModuleUrlImpl(activity, module);
}
public IModuleHandle getModuleHandle(MenuBean bean) {
return new ModuleBeanImpl(bean);
}
public String getModuleUrl(ModulesEnum module) {
Intent intent = activity.getIntent();
String url = intent.getStringExtra(module.name);
if (!TextUtils.isEmpty(url)) {
return url;
}
if (module == ModulesEnum.HOME) {
return Constants.MODULE_URL_HOME;
} else if (module == ModulesEnum.LEARN) {
return Constants.MODULE_URL_LEARN;
}
return "";
}
public interface IModuleHandle {
ModulesEnum getModule();
void loadUrl(IWebview webview);
}
class ModuleBeanImpl implements IModuleHandle {
private MenuBean bean;
ModuleBeanImpl(MenuBean bean) {
this.bean = bean;
}
@Override
public ModulesEnum getModule() {
return ModulesEnum.findModule(this.bean.getModuleName());
}
@Override
public void loadUrl(IWebview webview) {
if (!TextUtils.isEmpty(bean.getUrl())) {
webview.loadUrl(bean.getUrl());
} else if (!TextUtils.isEmpty(bean.getRouteName())) {
webview.callJs(JsApi.API_ROUTE, "");
} else if (!TextUtils.isEmpty(bean.getRoutePath())) {
webview.callJs(JsApi.API_ROUTE, "");
}
}
}
class ModuleUrlImpl implements IModuleHandle {
private Activity mActivity;
private ModulesEnum module;
ModuleUrlImpl(Activity mActivity, ModulesEnum module) {
this.mActivity = mActivity;
this.module = module;
}
@Override
public ModulesEnum getModule() {
return this.module;
}
@Override
public void loadUrl(IWebview webview) {
Intent intent = activity.getIntent();
String url = intent.getStringExtra(module.name);
if (!TextUtils.isEmpty(url)) {
if (module == ModulesEnum.MEMBER) {
webview.callJs(JsApi.API_ROUTE, "");
} else if (module == ModulesEnum.MY) {
webview.callJs(JsApi.API_ROUTE, "");
} else {
webview.loadUrl(url);
}
return;
}
if (module == ModulesEnum.HOME) {
webview.loadUrl(Constants.MODULE_URL_HOME);
} else if (ModulesEnum.LEARN == module) {
webview.loadUrl(Constants.MODULE_URL_LEARN);
} else if (ModulesEnum.MEMBER == module) {
webview.loadUrl(Constants.MODULE_URL_MEMBER);
} else if (ModulesEnum.MY == module) {
webview.loadUrl(Constants.MODULE_URL_MY);
}
}
}
}
package com.polysoft.nafmii.activity.home;
import android.text.TextUtils;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
......@@ -19,10 +18,12 @@ public class ModulesFragmentMgr implements FragmentManager.OnBackStackChangedLis
private int containerId;
private ModulesEnum currentModule;
private OnChangeModuleListener changeListener;
private ModuleUrlHandle moduleHandle;
public ModulesFragmentMgr(FragmentManager manager, int containerId) {
this.manager = manager;
public ModulesFragmentMgr(FragmentActivity activity, int containerId) {
this.manager = activity.getSupportFragmentManager();
this.containerId = containerId;
this.moduleHandle = new ModuleUrlHandle(activity);
manager.addOnBackStackChangedListener(this);
}
......@@ -31,14 +32,12 @@ public class ModulesFragmentMgr implements FragmentManager.OnBackStackChangedLis
this.changeListener = listener;
}
public void showInitFragment(ModulesEnum[] modules, String url) {
WebViewFragment fragment = this.addModuleFragment(modules[0], url);
for (int i = 1; i < modules.length; i++) {
public void showInitFragment(ModulesEnum[] modules) {
for (int i = 0; i < modules.length; i++) {
this.addModuleFragment(modules[i]);
}
// WebViewFragment fragment = this.findFragment(modules[0]);
WebViewFragment fragment = this.findFragment(modules[0]);
FragmentTransaction transaction = this.manager.beginTransaction();
transaction.show(fragment).commitNow();
this.setCurrentModule(modules[0]);
......@@ -65,28 +64,23 @@ public class ModulesFragmentMgr implements FragmentManager.OnBackStackChangedLis
if (module == this.currentModule) {
return;
}
WebViewFragment fragment = this.findFragment(module);
if (!module.fmtKey.equals(this.currentModule.fmtKey)) {
FragmentTransaction transaction = this.manager.beginTransaction();
transaction.hide(this.getCurrentFragment());
transaction.addToBackStack("").show(fragment).commit();
} else {
fragment.getWebview().loadUrl(module.webUrl);
}
this.setCurrentModule(module);
this.showModule(this.moduleHandle.getModuleHandle(module));
}
public void showModule(MenuBean bean) {
ModulesEnum module = ModulesEnum.findModule(bean.getModuleName());
this.showModule(moduleHandle.getModuleHandle(bean));
}
private void showModule(ModuleUrlHandle.IModuleHandle handle) {
ModulesEnum module = handle.getModule();
WebViewFragment fragment = this.findFragment(module);
if (!TextUtils.isEmpty(bean.getUrl())) {
fragment.getWebview().loadUrl(bean.getUrl());
}
if (!module.fmtKey.equals(this.currentModule.fmtKey)) {
FragmentTransaction transaction = this.manager.beginTransaction();
transaction.hide(this.getCurrentFragment());
transaction.addToBackStack("").show(fragment).commit();
} else {
handle.loadUrl(fragment.getWebview());
}
this.setCurrentModule(module);
}
......@@ -96,14 +90,10 @@ public class ModulesFragmentMgr implements FragmentManager.OnBackStackChangedLis
}
private WebViewFragment addModuleFragment(ModulesEnum module) {
return addModuleFragment(module, null);
}
private WebViewFragment addModuleFragment(ModulesEnum module, String url) {
WebViewFragment fragment = (WebViewFragment) this.manager.findFragmentByTag(module.fmtKey);
if (null == fragment) {
FragmentTransaction transaction = this.manager.beginTransaction();
fragment = WebViewFragment.newInstances(!TextUtils.isEmpty(url) ? url : module.webUrl);
fragment = WebViewFragment.newInstances(this.moduleHandle.getModuleUrl(module));
transaction.add(this.containerId, fragment, module.fmtKey).hide(fragment).commitNow();
}
return fragment;
......
package com.polysoft.nafmii.constants;
public class Constants {
public static final String MODULE_URL_HOME = "file:///android_asset/dist/index.html#/";
public static final String MODULE_URL_MY = "";
public static final String MODULE_URL_MEMBER = "";
public static final String MODULE_URL_LEARN = "http://debugtbs.qq.com";
public static final String MODULE_ROUTE_MY = "";
public static final String MODULE_ROUTE_MEMBER = "";
}
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!