From c8684f837a27f704e94d994cf37cde8ef9da7b16 Mon Sep 17 00:00:00 2001 From: juntao Date: Fri, 5 Feb 2021 17:40:56 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=97=AA=E9=80=80?= =?UTF-8?q?=E9=97=AE=E9=A2=98=201.=20=E4=BF=AE=E5=A4=8D=E9=A6=96=E9=A1=B5?= =?UTF-8?q?=E6=B8=B8=E6=88=8F=E5=BA=93=E6=95=B0=E6=8D=AE=E5=BA=93=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E9=97=AA=E9=80=80=E9=97=AE=E9=A2=98=202.=20=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E9=83=A8=E5=88=86=E8=AE=BE=E5=A4=87=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E4=B8=8B=E8=BD=BD=E5=88=97=E8=A1=A8=E6=97=B6=E7=9A=84=E9=97=AA?= =?UTF-8?q?=E9=80=80=E9=97=AE=E9=A2=98=203.=20=E4=BF=AE=E5=A4=8D=E9=87=8D?= =?UTF-8?q?=E5=A4=8D=E5=8F=91=E9=80=81=E8=AE=BE=E5=A4=87=E5=BA=94=E7=94=A8?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/gh/common/util/HomePluggableHelper.kt | 3 +-- app/src/main/java/com/gh/common/util/PackageUtils.java | 7 +++++++ app/src/main/java/com/gh/download/DownloadManager.java | 7 ++++++- .../com/gh/gamecenter/packagehelper/PackageRepository.kt | 2 ++ 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/gh/common/util/HomePluggableHelper.kt b/app/src/main/java/com/gh/common/util/HomePluggableHelper.kt index 1f8d6e43ec..c2e75b8477 100644 --- a/app/src/main/java/com/gh/common/util/HomePluggableHelper.kt +++ b/app/src/main/java/com/gh/common/util/HomePluggableHelper.kt @@ -1,6 +1,5 @@ package com.gh.common.util -import android.database.sqlite.SQLiteFullException import com.gh.gamecenter.entity.GameEntity import com.gh.gamecenter.entity.HomePluggableFilterEntity import com.gh.gamecenter.room.AppDatabase @@ -48,7 +47,7 @@ object HomePluggableHelper { } mHomePluggableFilterDao.addData(filterList) } - } catch (e: SQLiteFullException) { + } catch (e: Exception) { e.printStackTrace() toastInInternalRelease("数据库/磁盘已满,插件筛选失败") } diff --git a/app/src/main/java/com/gh/common/util/PackageUtils.java b/app/src/main/java/com/gh/common/util/PackageUtils.java index 059bd43654..a6bd0e39ab 100644 --- a/app/src/main/java/com/gh/common/util/PackageUtils.java +++ b/app/src/main/java/com/gh/common/util/PackageUtils.java @@ -556,6 +556,13 @@ public class PackageUtils { if (!pm.isScreenOn()) return false; } + // 上面的判断逻辑可能还是不够用,还是有少部分 + // Not allowed to start service Intent: app is in background 错误 + // 这里补充个自有的规则 + if (!HaloApp.getInstance().isRunningForeground) { + return false; + } + String packageName = context.getApplicationContext().getPackageName(); for (ActivityManager.RunningAppProcessInfo appProcess : appProcesses) { // The name of the process that this object is associated with. diff --git a/app/src/main/java/com/gh/download/DownloadManager.java b/app/src/main/java/com/gh/download/DownloadManager.java index 96d624e4d4..eaff6de73d 100644 --- a/app/src/main/java/com/gh/download/DownloadManager.java +++ b/app/src/main/java/com/gh/download/DownloadManager.java @@ -485,10 +485,15 @@ public class DownloadManager implements DownloadStatusListener { * @param packageName 包名 * @return null表示下载列表中不存在该任务,否则返回下载任务 */ + @Nullable public DownloadEntity getDownloadEntityByPackageName(String packageName) { if (mDownloadDao == null) return null; - for (DownloadEntity downloadEntity : mDownloadDao.getAll()) { + List downloadList = mDownloadDao.getAll(); + + if (downloadList == null) return null; + + for (DownloadEntity downloadEntity : downloadList) { if (packageName.equals(downloadEntity.getPackageName())) { return downloadEntity; } diff --git a/app/src/main/java/com/gh/gamecenter/packagehelper/PackageRepository.kt b/app/src/main/java/com/gh/gamecenter/packagehelper/PackageRepository.kt index 3386083e82..85d7f81493 100644 --- a/app/src/main/java/com/gh/gamecenter/packagehelper/PackageRepository.kt +++ b/app/src/main/java/com/gh/gamecenter/packagehelper/PackageRepository.kt @@ -147,6 +147,8 @@ object PackageRepository { e.printStackTrace() } LoghubUtils.log(wrapperObject, "halo-api-device-installed", true) + + SPUtils.setLong(LAST_UPLOAD_APPLIST_TIME, System.currentTimeMillis() / 1000); } } From 267363f46d6d2bbe1f8cee1801c87c41a45fde09 Mon Sep 17 00:00:00 2001 From: lyr <15622190878@163.com> Date: Sun, 7 Feb 2021 14:40:37 +0800 Subject: [PATCH 2/2] =?UTF-8?q?1.=E4=BF=AE=E5=A4=8Doppo=E6=89=8B=E6=9C=BA?= =?UTF-8?q?=E6=97=A0=E6=B3=95=E5=90=AF=E5=8A=A8=E6=9C=8D=E5=8A=A1=E9=97=AE?= =?UTF-8?q?=E9=A2=98=EF=BC=9B=202.=E4=BF=AE=E5=A4=8D=E6=96=B0=E5=88=86?= =?UTF-8?q?=E7=B1=BB=E9=A1=B5=E9=9D=A2=E5=AF=B9=E8=B1=A1=E6=9C=AA=E5=88=9D?= =?UTF-8?q?=E5=A7=8B=E5=8C=96=E9=97=AE=E9=A2=98=EF=BC=9B=203.=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E6=96=B0=E5=88=86=E7=B1=BB=E9=A1=B5=E4=B8=8B=E8=BD=BD?= =?UTF-8?q?=E9=80=9A=E7=9F=A5=E5=8C=85=E5=90=8D=E4=B8=BA=E7=A9=BA=E9=97=AE?= =?UTF-8?q?=E9=A2=98=EF=BC=9B=204.=E4=BF=AE=E5=A4=8D=E6=96=B0=E5=88=86?= =?UTF-8?q?=E7=B1=BB=E4=B8=AD=E5=AD=90=E5=88=86=E7=B1=BB=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E4=B8=BA=E7=A9=BA=E9=97=AE=E9=A2=98=EF=BC=9B=205.=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E9=97=AE=E9=A2=98=E5=8F=8D=E9=A6=88=E9=A1=B5=E6=B8=B8?= =?UTF-8?q?=E6=A0=87=E8=B6=8A=E7=95=8C=E9=97=AE=E9=A2=98=EF=BC=9B=206.?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=B8=AA=E4=BA=BA=E4=BF=A1=E6=81=AF=E7=BC=96?= =?UTF-8?q?=E8=BE=91=E9=A1=B5=E8=8E=B7=E5=8F=96=E8=8F=9C=E5=8D=95=E4=B8=BA?= =?UTF-8?q?=E7=A9=BA=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/gh/download/DownloadManager.java | 11 ++- .../com/gh/gamecenter/SuggestionActivity.java | 3 +- .../gh/gamecenter/catalog/CatalogFragment.kt | 68 +++++++++---------- .../catalog/NewCatalogListAdapter.kt | 6 +- .../catalog/NewCatalogListFragment.kt | 2 +- .../gamecenter/catalog/SubCatalogFragment.kt | 26 +++---- .../fragment/user/UserInfoEditFragment.java | 4 +- 7 files changed, 65 insertions(+), 55 deletions(-) diff --git a/app/src/main/java/com/gh/download/DownloadManager.java b/app/src/main/java/com/gh/download/DownloadManager.java index eaff6de73d..429248efb3 100644 --- a/app/src/main/java/com/gh/download/DownloadManager.java +++ b/app/src/main/java/com/gh/download/DownloadManager.java @@ -760,7 +760,16 @@ public class DownloadManager implements DownloadStatusListener { serviceIntent.putExtra(DownloadService.KEY_SERVICE_ACTION, DownloadService.START_FOREGROUND); mContext.startForegroundService(serviceIntent); } else { - mContext.startService(serviceIntent); + /* + * sentry上报oppo手机无法启动服务,原因:OPPO手机自动熄屏一段时间后,会启用系统自带的电量优化管理,禁止一切自启动的APP(用户设置的自启动白名单除外),所以在服务启动的地方进行try/catch防止崩溃, + * https://sentry.ghzs.com/organizations/lightgame/issues/10707/?project=22&query=is%3Aunresolved+assigned%3Ame&statsPeriod=14d, + * https://stackoverflow.com/questions/38764497/security-exception-unable-to-start-service-user-0-is-restricted + */ + ExtensionsKt.tryWithDefaultCatch(() -> { + mContext.startService(serviceIntent); + return null; + }); + } } diff --git a/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java b/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java index 97615a1e93..07b943ec51 100644 --- a/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java @@ -319,10 +319,9 @@ public class SuggestionActivity extends ToolBarActivity implements OnRequestCall String[] filePathColumn = {MediaStore.Images.Media.DATA}; Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null); - if (cursor == null) { + if (cursor == null || !cursor.moveToFirst()) { return; } - cursor.moveToFirst(); int columnIndex = cursor.getColumnIndex(filePathColumn[0]); String picturePath = cursor.getString(columnIndex); diff --git a/app/src/main/java/com/gh/gamecenter/catalog/CatalogFragment.kt b/app/src/main/java/com/gh/gamecenter/catalog/CatalogFragment.kt index 567fd541a0..d2f1acd244 100644 --- a/app/src/main/java/com/gh/gamecenter/catalog/CatalogFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/catalog/CatalogFragment.kt @@ -14,11 +14,11 @@ import com.gh.gamecenter.normal.NormalFragment class CatalogFragment : NormalFragment() { - private lateinit var mBinding: FragmentCatalogBinding - private lateinit var mViewModel: CatalogViewModel - private lateinit var mEntity: CatalogEntity - private lateinit var mSpecialCatalogFragment: SpecialCatalogFragment - private lateinit var mSubCatalogFragment: SubCatalogFragment + private var mBinding: FragmentCatalogBinding? = null + private var mViewModel: CatalogViewModel? = null + private var mEntity: CatalogEntity? = null + private var mSpecialCatalogFragment: SpecialCatalogFragment? = null + private var mSubCatalogFragment: SubCatalogFragment? = null private var mCatalogId: String = "" private var mCatalogTitle: String = "" @@ -33,15 +33,15 @@ class CatalogFragment : NormalFragment() { mCatalogTitle = arguments?.getString(EntranceUtils.KEY_CATALOG_TITLE) ?: "" mViewModel = viewModelProviderFromParent(CatalogViewModel.Factory(mCatalogId, mCatalogTitle)) - mViewModel.validEntranceName = if (mEntrance.contains("首页")) "首页" else "板块" - mViewModel.logAppearance() + mViewModel?.validEntranceName = if (mEntrance.contains("首页")) "首页" else "板块" + mViewModel?.logAppearance() } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) setNavigationTitle(mCatalogTitle) - mViewModel.catalogs.observe(viewLifecycleOwner, Observer { - mBinding.run { + mViewModel?.catalogs?.observe(viewLifecycleOwner, Observer { + mBinding?.run { reuseLoading.root.visibility = View.GONE if (it != null) { reuseNoConnection.root.visibility = View.GONE @@ -49,9 +49,9 @@ class CatalogFragment : NormalFragment() { containerCatalog.visibility = View.VISIBLE reuseNoneData.root.visibility = View.GONE mEntity = it - if (mEntity.hasSpecial) { + if (mEntity!!.hasSpecial) { val specialEntity = CatalogEntity.SubCatalogEntity(name = "精选") - (mEntity.subCatalog as ArrayList).add(0, specialEntity) + (mEntity!!.subCatalog as ArrayList).add(0, specialEntity) } initView() } else { @@ -64,7 +64,7 @@ class CatalogFragment : NormalFragment() { reuseNoConnection.root.visibility = View.VISIBLE reuseNoConnection.root.setOnClickListener { reuseLoading.root.visibility = View.VISIBLE - mViewModel.getCatalogs() + mViewModel?.getCatalogs() } } } @@ -72,45 +72,43 @@ class CatalogFragment : NormalFragment() { } private fun initView() { - mEntity.run { - if (subCatalog.isNotEmpty()) { - mViewModel.selectedCatalogName = subCatalog[0].name - mBinding.rvCatalog.layoutManager = FixLinearLayoutManager(requireContext()) - mBinding.rvCatalog.adapter = CatalogAdapter(requireContext(), this@CatalogFragment, mViewModel, subCatalog) + mEntity?.takeIf { it.subCatalog.isNotEmpty() && mViewModel != null }?.run { + mViewModel?.selectedCatalogName = subCatalog[0].name + mBinding?.rvCatalog?.layoutManager = FixLinearLayoutManager(requireContext()) + mBinding?.rvCatalog?.adapter = CatalogAdapter(requireContext(), this@CatalogFragment, mViewModel!!, subCatalog) - if (hasSpecial) { - mSpecialCatalogFragment = childFragmentManager.findFragmentByTag(SpecialCatalogFragment::class.java.simpleName) as? SpecialCatalogFragment ?: SpecialCatalogFragment() - mSpecialCatalogFragment.arguments = bundleOf(EntranceUtils.KEY_CATALOG_ID to mEntity.id) - childFragmentManager.beginTransaction().replace(R.id.container_sub_catalog, mSpecialCatalogFragment, SpecialCatalogFragment::class.java.simpleName).commitAllowingStateLoss() - } else { - mSubCatalogFragment = childFragmentManager.findFragmentByTag(SubCatalogFragment::class.java.simpleName) as? SubCatalogFragment ?: SubCatalogFragment() - mSubCatalogFragment.arguments = bundleOf(EntranceUtils.KEY_CATALOG_ID to mEntity.id, EntranceUtils.KEY_PRIMARY_CATALOG_ID to subCatalog[0].id) - childFragmentManager.beginTransaction().replace(R.id.container_sub_catalog, mSubCatalogFragment, SubCatalogFragment::class.java.simpleName).commitAllowingStateLoss() - } + if (hasSpecial) { + mSpecialCatalogFragment = childFragmentManager.findFragmentByTag(SpecialCatalogFragment::class.java.simpleName) as? SpecialCatalogFragment ?: SpecialCatalogFragment() + mSpecialCatalogFragment?.arguments = bundleOf(EntranceUtils.KEY_CATALOG_ID to id) + childFragmentManager.beginTransaction().replace(R.id.container_sub_catalog, mSpecialCatalogFragment!!, SpecialCatalogFragment::class.java.simpleName).commitAllowingStateLoss() + } else { + mSubCatalogFragment = childFragmentManager.findFragmentByTag(SubCatalogFragment::class.java.simpleName) as? SubCatalogFragment ?: SubCatalogFragment() + mSubCatalogFragment?.arguments = bundleOf(EntranceUtils.KEY_CATALOG_ID to id, EntranceUtils.KEY_PRIMARY_CATALOG_ID to subCatalog[0].id) + childFragmentManager.beginTransaction().replace(R.id.container_sub_catalog, mSubCatalogFragment!!, SubCatalogFragment::class.java.simpleName).commitAllowingStateLoss() } } } fun changeCatalog(position: Int) { - mEntity.run { + mEntity?.run { if (hasSpecial) { - if (mViewModel.selectedCatalogPosition == 0) { + if (mViewModel?.selectedCatalogPosition == 0) { mSubCatalogFragment = childFragmentManager.findFragmentByTag(SubCatalogFragment::class.java.simpleName) as? SubCatalogFragment ?: SubCatalogFragment() - mSubCatalogFragment.arguments = bundleOf(EntranceUtils.KEY_CATALOG_ID to mEntity.id, EntranceUtils.KEY_PRIMARY_CATALOG_ID to subCatalog[position].id) - childFragmentManager.beginTransaction().replace(R.id.container_sub_catalog, mSubCatalogFragment, SubCatalogFragment::class.java.simpleName).commitAllowingStateLoss() + mSubCatalogFragment?.arguments = bundleOf(EntranceUtils.KEY_CATALOG_ID to id, EntranceUtils.KEY_PRIMARY_CATALOG_ID to subCatalog[position].id) + childFragmentManager.beginTransaction().replace(R.id.container_sub_catalog, mSubCatalogFragment!!, SubCatalogFragment::class.java.simpleName).commitAllowingStateLoss() } else { if (position == 0) { mSpecialCatalogFragment = childFragmentManager.findFragmentByTag(SpecialCatalogFragment::class.java.simpleName) as? SpecialCatalogFragment ?: SpecialCatalogFragment() - mSpecialCatalogFragment.arguments = bundleOf(EntranceUtils.KEY_CATALOG_ID to mEntity.id) - childFragmentManager.beginTransaction().replace(R.id.container_sub_catalog, mSpecialCatalogFragment, SpecialCatalogFragment::class.java.simpleName).commitAllowingStateLoss() + mSpecialCatalogFragment?.arguments = bundleOf(EntranceUtils.KEY_CATALOG_ID to id) + childFragmentManager.beginTransaction().replace(R.id.container_sub_catalog, mSpecialCatalogFragment!!, SpecialCatalogFragment::class.java.simpleName).commitAllowingStateLoss() } else { - mSubCatalogFragment.changeSubCatalog(subCatalog[position].id) + mSubCatalogFragment?.changeSubCatalog(subCatalog[position].id) } } } else { - mSubCatalogFragment.changeSubCatalog(subCatalog[position].id) + mSubCatalogFragment?.changeSubCatalog(subCatalog[position].id) } - mViewModel.selectedCatalogPosition = position + mViewModel?.selectedCatalogPosition = position } } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/catalog/NewCatalogListAdapter.kt b/app/src/main/java/com/gh/gamecenter/catalog/NewCatalogListAdapter.kt index ef841e596e..0b222ec115 100644 --- a/app/src/main/java/com/gh/gamecenter/catalog/NewCatalogListAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/catalog/NewCatalogListAdapter.kt @@ -137,7 +137,11 @@ class NewCatalogListAdapter(context: Context, fun notifyItemByDownload(download: DownloadEntity) { for (key in positionAndPackageMap.keys) { - if (key.contains(download.packageName) && key.contains(download.gameId)) { + // sentry上报download.packageName可能为空 + if (download.packageName != null + && download.gameId != null + && key.contains(download.packageName) + && key.contains(download.gameId)) { val position = positionAndPackageMap[key] if (position != null && mEntityList != null && position < mEntityList.size) { mEntityList[position].getEntryMap()[download.platform] = download diff --git a/app/src/main/java/com/gh/gamecenter/catalog/NewCatalogListFragment.kt b/app/src/main/java/com/gh/gamecenter/catalog/NewCatalogListFragment.kt index 3c18aa2c59..af95192c31 100644 --- a/app/src/main/java/com/gh/gamecenter/catalog/NewCatalogListFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/catalog/NewCatalogListFragment.kt @@ -68,7 +68,7 @@ class NewCatalogListFragment : ListFragment mViewModel.categoryTitle = arguments?.getString(EntranceUtils.KEY_CATALOG_TITLE) ?: "" mEntrance = arguments?.getString(EntranceUtils.KEY_ENTRANCE) ?: Constants.ENTRANCE_UNKNOWN mPrimeCatalog = arguments?.getParcelable(EntranceUtils.KEY_DATA) - mSubCatalogList = mPrimeCatalog?.subCatalog as ArrayList + mSubCatalogList = mPrimeCatalog?.subCatalog as? ArrayList ?: arrayListOf() mInitCatalogName = arguments?.getString(EntranceUtils.KEY_CATALOG_INIT_TITLE) ?: "" mPrimaryCatalogName = arguments?.getString(EntranceUtils.KEY_PRIMARY_CATALOG_NAME) ?: "" diff --git a/app/src/main/java/com/gh/gamecenter/catalog/SubCatalogFragment.kt b/app/src/main/java/com/gh/gamecenter/catalog/SubCatalogFragment.kt index 3ccd022080..09ffdb016b 100644 --- a/app/src/main/java/com/gh/gamecenter/catalog/SubCatalogFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/catalog/SubCatalogFragment.kt @@ -13,10 +13,10 @@ import com.gh.gamecenter.normal.NormalFragment class SubCatalogFragment : NormalFragment() { - private lateinit var mBinding: FragmentSubCatalogBinding - private lateinit var mViewModel: SubCatalogViewModel - private lateinit var mCatalogViewModel: CatalogViewModel - private lateinit var mEntity: CatalogEntity + private var mBinding: FragmentSubCatalogBinding? = null + private var mViewModel: SubCatalogViewModel? = null + private var mCatalogViewModel: CatalogViewModel? = null + private var mEntity: CatalogEntity? = null private var mCatalogId: String = "" private var mPrimaryCatalogId: String = "" @@ -31,14 +31,14 @@ class SubCatalogFragment : NormalFragment() { mPrimaryCatalogId = arguments?.getString(EntranceUtils.KEY_PRIMARY_CATALOG_ID) ?: "" mViewModel = viewModelProvider(SubCatalogViewModel.Factory(mCatalogId)) mCatalogViewModel = viewModelProviderFromParent(CatalogViewModel.Factory(mCatalogId, "")) - mViewModel.getSubCatalogs(mPrimaryCatalogId) + mViewModel?.getSubCatalogs(mPrimaryCatalogId) } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - mViewModel.catalogs.observe(viewLifecycleOwner, Observer { - mBinding.run { + mViewModel?.catalogs?.observe(viewLifecycleOwner, Observer { + mBinding?.run { reuseLoading.root.visibility = View.GONE if (it != null) { reuseNoConnection.root.visibility = View.GONE @@ -57,7 +57,7 @@ class SubCatalogFragment : NormalFragment() { reuseNoConnection.root.visibility = View.VISIBLE reuseNoConnection.root.setOnClickListener { reuseLoading.root.visibility = View.VISIBLE - mViewModel.getSubCatalogs(mPrimaryCatalogId) + mViewModel?.getSubCatalogs(mPrimaryCatalogId) } } } @@ -65,20 +65,20 @@ class SubCatalogFragment : NormalFragment() { } private fun initView() { - mEntity.run { - mBinding.rvSubCatalog.layoutManager = GridLayoutManager(requireContext(), 3) - mBinding.rvSubCatalog.adapter = SubCatalogAdapter(requireContext(), mCatalogViewModel, mEntity, subCatalog) + mEntity?.takeIf { mCatalogViewModel != null }?.run { + mBinding?.rvSubCatalog?.layoutManager = GridLayoutManager(requireContext(), 3) + mBinding?.rvSubCatalog?.adapter = SubCatalogAdapter(requireContext(), mCatalogViewModel!!, this, subCatalog) } } fun changeSubCatalog(primaryCatalogId: String) { - mBinding.run { + mBinding?.run { mPrimaryCatalogId = primaryCatalogId rvSubCatalog.visibility = View.GONE reuseNoneData.root.visibility = View.GONE reuseNoConnection.root.visibility = View.GONE reuseLoading.root.visibility = View.VISIBLE - mViewModel.getSubCatalogs(mPrimaryCatalogId) + mViewModel?.getSubCatalogs(mPrimaryCatalogId) } } } \ No newline at end of file diff --git a/app/src/main/java/com/halo/assistant/fragment/user/UserInfoEditFragment.java b/app/src/main/java/com/halo/assistant/fragment/user/UserInfoEditFragment.java index 8ea5d5ae5f..4f5ad100d6 100644 --- a/app/src/main/java/com/halo/assistant/fragment/user/UserInfoEditFragment.java +++ b/app/src/main/java/com/halo/assistant/fragment/user/UserInfoEditFragment.java @@ -123,8 +123,8 @@ public class UserInfoEditFragment extends NormalFragment { initMenu(R.menu.menu_button); mSaveMenuItem = getItemMenu(R.id.menu_button); - // sentry上报mSaveMenuItem.getActionView()可能为空 - if (mSaveMenuItem.getActionView() != null) { + // sentry上报mSaveMenuItem、mSaveMenuItem.getActionView()可能为空 + if (mSaveMenuItem != null && mSaveMenuItem.getActionView() != null) { TextView menuView = mSaveMenuItem.getActionView().findViewById(R.id.tv_menu_button); menuView.setText(R.string.menu_text_save); }