Compare commits

...

8 Commits

9 changed files with 52 additions and 26 deletions

View File

@ -920,9 +920,9 @@ object DirectUtils {
browserIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
}
context.startActivity(browserIntent)
} catch (e: ActivityNotFoundException) {
} catch (e: Exception) {
e.printStackTrace()
Utils.toast(context, "跳转地址无效")
url.copyTextAndToast(context.getString(R.string.direct_to_external_browser_failed_toast))
}
}

View File

@ -883,6 +883,7 @@ public class MainActivity extends BaseActivity {
@Override
protected void onSaveInstanceState(@NotNull Bundle outState) {
super.onSaveInstanceState(outState);
outState.clear();
outState.putInt(CURRENT_PAGE, mMainWrapperFragment.getCurrentItem());
if (mMainWrapperFragment != null) {
outState.putInt(BaseFragment_ViewPager.ARGS_INDEX, mMainWrapperFragment.getCurrentItem());

View File

@ -1,17 +1,22 @@
package com.gh.gamecenter.adapter
import android.content.Context
import android.content.Intent
import android.util.SparseIntArray
import android.view.ViewGroup
import androidx.core.util.forEach
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentPagerAdapter
import com.gh.gamecenter.common.BuildConfig
/***
* 支持替换Fragment的FragmentPagerAdapter
*/
class MainFragmentPagerAdapter(
private val mContext: Context,
private val mFragmentManager: FragmentManager,
private val mFragmentsList: ArrayList<Fragment>
private val mFragmentsList: ArrayList<Fragment>,
) : FragmentPagerAdapter(mFragmentManager) {
private val mFragmentPositionSparseArray = SparseIntArray() // 记录Fragment的位置
private val mFragmentPositionUpdateSparseArray = SparseIntArray() // 记录更新后Fragment的位置
@ -76,4 +81,24 @@ class MainFragmentPagerAdapter(
override fun getItem(position: Int): Fragment = mFragmentsList[position]
override fun getItemId(position: Int): Long = mFragmentsList[position].hashCode().toLong()
override fun finishUpdate(container: ViewGroup) {
// 替换Fragment闪退关联问题REPLACE_FRAGMENT_CRASH
try {
super.finishUpdate(container)
} catch (e: Throwable) {
if (BuildConfig.DEBUG) {
throw e
} else {
e.printStackTrace()
// 重启APP
val pm = mContext.packageManager
val intent = pm?.getLaunchIntentForPackage(mContext.packageName)
val mainIntent = Intent.makeRestartActivityTask(intent!!.component)
mContext.startActivity(mainIntent)
Runtime.getRuntime().exit(0)
}
}
}
}

View File

@ -105,7 +105,7 @@ class MainWrapperFragment : BaseFragment_ViewPager_Checkable(), OnBackPressedLis
override fun getViewPagerId(): Int = R.id.lightgame_tab_viewpager
override fun getCurrentItem() = mViewPager.currentItem
override fun getChildCount(): Int = 5
override fun provideAdapter(): PagerAdapter = MainFragmentPagerAdapter(childFragmentManager, mFragmentsList as ArrayList<Fragment>)
override fun provideAdapter(): PagerAdapter = MainFragmentPagerAdapter(requireContext(), childFragmentManager, mFragmentsList as ArrayList<Fragment>)
override fun initFragmentList(fragments: MutableList<Fragment>) {
mHomeFragment = HomeSearchToolWrapperFragment()
@ -330,21 +330,7 @@ class MainWrapperFragment : BaseFragment_ViewPager_Checkable(), OnBackPressedLis
homeArgs.putBoolean(EntranceConsts.KEY_IS_HOME, true)
}
override fun restoreFragments(): ArrayList<Fragment> {
val restoreFragments = super.restoreFragments()
for (fragment in restoreFragments) {
if (fragment is SearchToolWrapperFragment && fragment !is HomeSearchToolWrapperFragment) {
mGameWrapperFragment = fragment
} else if (fragment is HomeVideoFragment || fragment is HomeToolbarWrapperFragment || fragment is AmwayFragment || fragment is ForumDetailFragment) {
mFourthFragment = fragment as ToolbarFragment?
} else if (fragment is CommunityHomeFragment) {
mCommunityHomeFragment = fragment
} else if (fragment is HomeSearchToolWrapperFragment) {
mHomeFragment = fragment
}
}
return restoreFragments
}
override fun restoreFragments(): ArrayList<Fragment> = ArrayList()
override fun onCreate(savedInstanceState: Bundle?) {
mViewModel = viewModelProviderFromParent(MainWrapperViewModel.Factory(HaloApp.getInstance()))

View File

@ -199,6 +199,8 @@ public class SearchToolbarFragment extends BaseLazyFragment implements View.OnCl
super.onCreate(savedInstanceState);
if (getArguments() != null && getArguments().getString(EntranceConsts.KEY_LOCATION) != null) {
mLocation = getArguments().getString(EntranceConsts.KEY_LOCATION);
} else {
mLocation = "";
}
mHintIndex = 0;
if (savedInstanceState != null) {

View File

@ -6,6 +6,7 @@ import android.content.MutableContextWrapper
import android.view.ViewGroup
import android.webkit.WebResourceResponse
import android.webkit.WebView
import com.gh.common.util.PackageUtils
import com.gh.common.view.RichEditor
import com.gh.gamecenter.common.utils.EnvHelper
import com.gh.gamecenter.common.utils.removeFromParent
@ -40,6 +41,10 @@ object ArticleDetailWebCacheManager {
@SuppressLint("CheckResult")
fun init(applicationContext: Context) {
if (!PackageUtils.checkWebViewIsAvailable(applicationContext)) {
return
}
if (isInit) return
isInit = true
@ -98,6 +103,10 @@ object ArticleDetailWebCacheManager {
* 预初始化 WebView
*/
fun preInitRichEditor(context: Context) {
if (!PackageUtils.checkWebViewIsAvailable(context)) {
return
}
// 避免未正常初始化的情况
if (!isInit) {
init(context.applicationContext)

View File

@ -192,11 +192,13 @@ class HomeVideoFragment : BaseLazyFragment() {
fun getCurrentFragment(): VideoDetailContainerFragment? {
val mIsHomeVideo = arguments?.getBoolean(EntranceConsts.KEY_IS_HOME_VIDEO, false) ?: false
return if (mIsHomeVideo) {
if (mBinding.mViewPager.currentItem == 0) {
newestVideoDetailFragment
} else {
recommendVideoDetailFragment
}
if (::mBinding.isInitialized) {
if (mBinding.mViewPager.currentItem == 0) {
newestVideoDetailFragment
} else {
recommendVideoDetailFragment
}
} else null
} else {
recommendVideoDetailFragment
}

View File

@ -520,4 +520,5 @@
<string name="servers_calendar_no_remind_checked_hint">至少勾选一种提醒方式</string>
<string name="servers_calendar_time_out_of_date">区服已开服,不能设置提醒</string>
<string name="network_error_hint">网络异常,请检查手机网络状态</string>
<string name="direct_to_external_browser_failed_toast">打开外部浏览器失败,已复制链接到粘贴板,请自行打开链接</string>
</resources>

View File

@ -7,8 +7,8 @@ ext {
targetSdkVersion = 28
// application info (每个大版本之间的 versionCode 增加 20)
versionCode = 995
versionName = "5.32.5"
versionCode = 996
versionName = "5.32.6"
applicationId = "com.gh.gamecenter"
// AndroidX