From 3a5a1df270a608b4c58d7afeb6d82bb4e14a2032 Mon Sep 17 00:00:00 2001 From: ZQDesigned <2990918167@QQ.COM> Date: Wed, 21 Jun 2023 00:22:43 +0800 Subject: [PATCH 1/4] Fix:deprecated AppErrorInfo when dialog covers AppErrorsDetailActivity --- .../errors/AppErrorsDetailActivity.kt | 49 +++++++++++++------ 1 file changed, 34 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/com/fankes/apperrorstracking/ui/activity/errors/AppErrorsDetailActivity.kt b/app/src/main/java/com/fankes/apperrorstracking/ui/activity/errors/AppErrorsDetailActivity.kt index 719e71d..3e6a22f 100644 --- a/app/src/main/java/com/fankes/apperrorstracking/ui/activity/errors/AppErrorsDetailActivity.kt +++ b/app/src/main/java/com/fankes/apperrorstracking/ui/activity/errors/AppErrorsDetailActivity.kt @@ -62,8 +62,32 @@ class AppErrorsDetailActivity : BaseActivity() { private var stackTrace = "" override fun onCreate() { + if (!parseIntent(intent)) return + + binding.titleBackIcon.setOnClickListener { onBackPressed() } + + binding.disableAutoWrapErrorStackTraceSwitch.bind(ConfigData.DISABLE_AUTO_WRAP_ERROR_STACK_TRACE) { + onInitialize { + binding.errorStackTraceScrollView.isVisible = it + binding.errorStackTraceFixedText.isGone = it + } + onChanged { + reinitialize() + resetScrollView() + } + } + + binding.detailTitleText.setOnClickListener { binding.appPanelScrollView.smoothScrollTo(0, 0) } + + resetScrollView() + } + + private fun parseIntent(intent: Intent?): Boolean { val appErrorsInfo = runCatching { intent?.getSerializableExtraCompat(EXTRA_APP_ERRORS_INFO) }.getOrNull() - ?: return toastAndFinish(name = "AppErrorsInfo") + if (appErrorsInfo == null) { + toastAndFinish(name = "AppErrorsInfo") + return false + } if (appErrorsInfo.isEmpty) { binding.appPanelScrollView.isVisible = false showDialog { @@ -80,10 +104,9 @@ class AppErrorsDetailActivity : BaseActivity() { } noCancelable() } - return + return false } binding.appInfoItem.setOnClickListener { openSelfSetting(appErrorsInfo.packageName) } - binding.titleBackIcon.setOnClickListener { onBackPressed() } binding.printIcon.setOnClickListener { loggerE(msg = appErrorsInfo.stackTrace) toast(LocaleString.printToLogcatSuccess) @@ -122,23 +145,12 @@ class AppErrorsDetailActivity : BaseActivity() { binding.errorRecordTimeText.text = appErrorsInfo.dateTime binding.errorStackTraceMovableText.text = appErrorsInfo.stackTrace binding.errorStackTraceFixedText.text = appErrorsInfo.stackTrace - binding.disableAutoWrapErrorStackTraceSwitch.bind(ConfigData.DISABLE_AUTO_WRAP_ERROR_STACK_TRACE) { - onInitialize { - binding.errorStackTraceScrollView.isVisible = it - binding.errorStackTraceFixedText.isGone = it - } - onChanged { - reinitialize() - resetScrollView() - } - } binding.appPanelScrollView.setOnScrollChangeListener { _, _, y, _, _ -> binding.detailTitleText.text = if (y >= 30.dp(context = this)) appNameOf(appErrorsInfo.packageName).ifBlank { appErrorsInfo.packageName } else LocaleString.appName } - binding.detailTitleText.setOnClickListener { binding.appPanelScrollView.smoothScrollTo(0, 0) } - resetScrollView() + return true } /** 修复在一些小屏设备上设置了 [TextView.setTextIsSelectable] 后布局自动上滑问题 */ @@ -163,4 +175,11 @@ class AppErrorsDetailActivity : BaseActivity() { intent?.removeExtra(EXTRA_APP_ERRORS_INFO) finish() } + override fun onNewIntent(intent: Intent?) { + super.onNewIntent(intent) + if (parseIntent(intent)) { + binding.appPanelScrollView.scrollTo(0, 0) + } + } + } \ No newline at end of file From 9834b6c8dd78a594e71567ea85bcc546a44af26c Mon Sep 17 00:00:00 2001 From: ZQDesigned <2990918167@QQ.COM> Date: Wed, 21 Jun 2023 01:14:17 +0800 Subject: [PATCH 2/4] Refactor code style --- .../errors/AppErrorsDetailActivity.kt | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/com/fankes/apperrorstracking/ui/activity/errors/AppErrorsDetailActivity.kt b/app/src/main/java/com/fankes/apperrorstracking/ui/activity/errors/AppErrorsDetailActivity.kt index 3e6a22f..6bb1505 100644 --- a/app/src/main/java/com/fankes/apperrorstracking/ui/activity/errors/AppErrorsDetailActivity.kt +++ b/app/src/main/java/com/fankes/apperrorstracking/ui/activity/errors/AppErrorsDetailActivity.kt @@ -62,10 +62,9 @@ class AppErrorsDetailActivity : BaseActivity() { private var stackTrace = "" override fun onCreate() { - if (!parseIntent(intent)) return + if (intent.parseAppErrorsInfo().not()) return binding.titleBackIcon.setOnClickListener { onBackPressed() } - binding.disableAutoWrapErrorStackTraceSwitch.bind(ConfigData.DISABLE_AUTO_WRAP_ERROR_STACK_TRACE) { onInitialize { binding.errorStackTraceScrollView.isVisible = it @@ -76,14 +75,19 @@ class AppErrorsDetailActivity : BaseActivity() { resetScrollView() } } - binding.detailTitleText.setOnClickListener { binding.appPanelScrollView.smoothScrollTo(0, 0) } - resetScrollView() } - private fun parseIntent(intent: Intent?): Boolean { - val appErrorsInfo = runCatching { intent?.getSerializableExtraCompat(EXTRA_APP_ERRORS_INFO) }.getOrNull() + /** + * 从 [Intent] 中解析 [AppErrorsInfoBean] 并加载至界面 + * + * @receiver [Intent] 待解析的 [Intent] 实例 + * + * @return [Boolean] 是否解析成功:true为成功;false为失败,可能是 [Intent] 为空或者 [AppErrorsInfoBean] 为空 + */ + private fun Intent?.parseAppErrorsInfo(): Boolean { + val appErrorsInfo = runCatching { this?.getSerializableExtraCompat(EXTRA_APP_ERRORS_INFO) }.getOrNull() if (appErrorsInfo == null) { toastAndFinish(name = "AppErrorsInfo") return false @@ -146,7 +150,7 @@ class AppErrorsDetailActivity : BaseActivity() { binding.errorStackTraceMovableText.text = appErrorsInfo.stackTrace binding.errorStackTraceFixedText.text = appErrorsInfo.stackTrace binding.appPanelScrollView.setOnScrollChangeListener { _, _, y, _, _ -> - binding.detailTitleText.text = if (y >= 30.dp(context = this)) + binding.detailTitleText.text = if (y >= 30.dp(context = this@AppErrorsDetailActivity)) appNameOf(appErrorsInfo.packageName).ifBlank { appErrorsInfo.packageName } else LocaleString.appName } @@ -177,9 +181,7 @@ class AppErrorsDetailActivity : BaseActivity() { } override fun onNewIntent(intent: Intent?) { super.onNewIntent(intent) - if (parseIntent(intent)) { - binding.appPanelScrollView.scrollTo(0, 0) - } + if (intent.parseAppErrorsInfo()) binding.appPanelScrollView.scrollTo(0, 0) } } \ No newline at end of file From a8768540101a101ccc7e8620c0bca4995b61ebf5 Mon Sep 17 00:00:00 2001 From: ZQDesigned <2990918167@QQ.COM> Date: Wed, 21 Jun 2023 01:32:06 +0800 Subject: [PATCH 3/4] Revert some changes and Refactor code style again --- .../ui/activity/errors/AppErrorsDetailActivity.kt | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/com/fankes/apperrorstracking/ui/activity/errors/AppErrorsDetailActivity.kt b/app/src/main/java/com/fankes/apperrorstracking/ui/activity/errors/AppErrorsDetailActivity.kt index 6bb1505..6664f92 100644 --- a/app/src/main/java/com/fankes/apperrorstracking/ui/activity/errors/AppErrorsDetailActivity.kt +++ b/app/src/main/java/com/fankes/apperrorstracking/ui/activity/errors/AppErrorsDetailActivity.kt @@ -62,8 +62,7 @@ class AppErrorsDetailActivity : BaseActivity() { private var stackTrace = "" override fun onCreate() { - if (intent.parseAppErrorsInfo().not()) return - + if (initUi(intent).not()) return binding.titleBackIcon.setOnClickListener { onBackPressed() } binding.disableAutoWrapErrorStackTraceSwitch.bind(ConfigData.DISABLE_AUTO_WRAP_ERROR_STACK_TRACE) { onInitialize { @@ -82,12 +81,10 @@ class AppErrorsDetailActivity : BaseActivity() { /** * 从 [Intent] 中解析 [AppErrorsInfoBean] 并加载至界面 * - * @receiver [Intent] 待解析的 [Intent] 实例 - * - * @return [Boolean] 是否解析成功:true为成功;false为失败,可能是 [Intent] 为空或者 [AppErrorsInfoBean] 为空 + * @return [Boolean] 是否解析成功:true 为成功;false 为失败,可能是 [Intent] 为空或者 [AppErrorsInfoBean] 为空 */ - private fun Intent?.parseAppErrorsInfo(): Boolean { - val appErrorsInfo = runCatching { this?.getSerializableExtraCompat(EXTRA_APP_ERRORS_INFO) }.getOrNull() + private fun initUi(intent: Intent?): Boolean { + val appErrorsInfo = runCatching { intent?.getSerializableExtraCompat(EXTRA_APP_ERRORS_INFO) }.getOrNull() if (appErrorsInfo == null) { toastAndFinish(name = "AppErrorsInfo") return false @@ -179,9 +176,9 @@ class AppErrorsDetailActivity : BaseActivity() { intent?.removeExtra(EXTRA_APP_ERRORS_INFO) finish() } + override fun onNewIntent(intent: Intent?) { super.onNewIntent(intent) - if (intent.parseAppErrorsInfo()) binding.appPanelScrollView.scrollTo(0, 0) + if (initUi(intent)) binding.appPanelScrollView.scrollTo(0, 0) } - } \ No newline at end of file From 886e8d1e372c75fbe3bbf3068b10d23081d38fc1 Mon Sep 17 00:00:00 2001 From: ZQDesigned <2990918167@QQ.COM> Date: Wed, 21 Jun 2023 01:43:29 +0800 Subject: [PATCH 4/4] Complete method annotation --- .../ui/activity/errors/AppErrorsDetailActivity.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/java/com/fankes/apperrorstracking/ui/activity/errors/AppErrorsDetailActivity.kt b/app/src/main/java/com/fankes/apperrorstracking/ui/activity/errors/AppErrorsDetailActivity.kt index 6664f92..4d1777b 100644 --- a/app/src/main/java/com/fankes/apperrorstracking/ui/activity/errors/AppErrorsDetailActivity.kt +++ b/app/src/main/java/com/fankes/apperrorstracking/ui/activity/errors/AppErrorsDetailActivity.kt @@ -81,6 +81,7 @@ class AppErrorsDetailActivity : BaseActivity() { /** * 从 [Intent] 中解析 [AppErrorsInfoBean] 并加载至界面 * + * @param intent 用于获取并解析 [AppErrorsInfoBean] 的 [Intent] 实例 * @return [Boolean] 是否解析成功:true 为成功;false 为失败,可能是 [Intent] 为空或者 [AppErrorsInfoBean] 为空 */ private fun initUi(intent: Intent?): Boolean {