From 49a9fb3817feb72acc7790e3a67c802644a99472 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=96=E7=95=8C?= Date: Wed, 6 Sep 2023 19:44:38 +0800 Subject: [PATCH] Fix crash --- .../sfa/bg/DefaultNetworkListener.kt | 6 +++++- .../io/nekohasekai/sfa/bg/ProxyService.kt | 2 +- .../sfa/ui/main/ConfigurationFragment.kt | 21 ++++++++----------- .../sfa/ui/main/SettingsFragment.kt | 11 +++++----- .../main/res/layout/fragment_dashboard.xml | 3 ++- 5 files changed, 23 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/io/nekohasekai/sfa/bg/DefaultNetworkListener.kt b/app/src/main/java/io/nekohasekai/sfa/bg/DefaultNetworkListener.kt index 6f5fb21..f89eb79 100644 --- a/app/src/main/java/io/nekohasekai/sfa/bg/DefaultNetworkListener.kt +++ b/app/src/main/java/io/nekohasekai/sfa/bg/DefaultNetworkListener.kt @@ -192,5 +192,9 @@ object DefaultNetworkListener { } } - private fun unregister() = Application.connectivity.unregisterNetworkCallback(Callback) + private fun unregister() { + runCatching { + Application.connectivity.unregisterNetworkCallback(Callback) + } + } } \ No newline at end of file diff --git a/app/src/main/java/io/nekohasekai/sfa/bg/ProxyService.kt b/app/src/main/java/io/nekohasekai/sfa/bg/ProxyService.kt index b019140..878f0c7 100644 --- a/app/src/main/java/io/nekohasekai/sfa/bg/ProxyService.kt +++ b/app/src/main/java/io/nekohasekai/sfa/bg/ProxyService.kt @@ -7,7 +7,7 @@ class ProxyService : Service(), PlatformInterfaceWrapper { private val service = BoxService(this, this) - override fun onStartCommand(intent: Intent, flags: Int, startId: Int) = + override fun onStartCommand(intent: Intent?, flags: Int, startId: Int) = service.onStartCommand(intent, flags, startId) override fun onBind(intent: Intent) = service.onBind(intent) diff --git a/app/src/main/java/io/nekohasekai/sfa/ui/main/ConfigurationFragment.kt b/app/src/main/java/io/nekohasekai/sfa/ui/main/ConfigurationFragment.kt index b0d55c4..7c19016 100644 --- a/app/src/main/java/io/nekohasekai/sfa/ui/main/ConfigurationFragment.kt +++ b/app/src/main/java/io/nekohasekai/sfa/ui/main/ConfigurationFragment.kt @@ -29,18 +29,14 @@ import kotlinx.coroutines.withContext class ConfigurationFragment : Fragment() { - private var _adapter: Adapter? = null - private var adapter: Adapter - get() = _adapter as Adapter - set(value) { - _adapter = value - } + private var adapter: Adapter? = null override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View { val binding = FragmentConfigurationBinding.inflate(inflater, container, false) - adapter = Adapter(lifecycleScope, binding) + val adapter = Adapter(lifecycleScope, binding) + this.adapter = adapter binding.profileList.also { it.layoutManager = LinearLayoutManager(requireContext()) it.adapter = adapter @@ -69,17 +65,17 @@ class ConfigurationFragment : Fragment() { override fun onResume() { super.onResume() - _adapter?.reload() + adapter?.reload() } override fun onDestroyView() { super.onDestroyView() ProfileManager.unregisterCallback(this::updateProfiles) - _adapter = null + adapter = null } private fun updateProfiles() { - _adapter?.reload() + adapter?.reload() } class Adapter( @@ -94,8 +90,10 @@ class ConfigurationFragment : Fragment() { internal fun reload() { if (isMoving) return scope.launch(Dispatchers.IO) { - items = ProfileManager.list().toMutableList() + val newItems = ProfileManager.list().toMutableList() withContext(Dispatchers.Main) { + items = newItems + notifyDataSetChanged() if (items.isEmpty()) { parent.statusText.isVisible = true parent.profileList.isVisible = false @@ -103,7 +101,6 @@ class ConfigurationFragment : Fragment() { parent.statusText.isVisible = false parent.profileList.isVisible = true } - notifyDataSetChanged() } } } diff --git a/app/src/main/java/io/nekohasekai/sfa/ui/main/SettingsFragment.kt b/app/src/main/java/io/nekohasekai/sfa/ui/main/SettingsFragment.kt index 672d463..bc6fe2e 100644 --- a/app/src/main/java/io/nekohasekai/sfa/ui/main/SettingsFragment.kt +++ b/app/src/main/java/io/nekohasekai/sfa/ui/main/SettingsFragment.kt @@ -31,13 +31,12 @@ import kotlinx.coroutines.withContext class SettingsFragment : Fragment() { - private var _binding: FragmentSettingsBinding? = null - private val binding get() = _binding!! - + private var binding: FragmentSettingsBinding? = null override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View { - _binding = FragmentSettingsBinding.inflate(inflater, container, false) + val binding = FragmentSettingsBinding.inflate(inflater, container, false) + this.binding = binding onCreate() return binding.root } @@ -52,6 +51,7 @@ class SettingsFragment : Fragment() { private fun onCreate() { val activity = activity as MainActivity? ?: return + val binding = binding ?: return binding.versionText.text = Libbox.version() binding.clearButton.setOnClickListener { lifecycleScope.launch(Dispatchers.IO) { @@ -119,6 +119,7 @@ class SettingsFragment : Fragment() { private suspend fun reloadSettings() { val activity = activity ?: return + val binding = binding ?: return val dataSize = Libbox.formatBytes( (activity.getExternalFilesDir(null) ?: activity.filesDir) .walkTopDown().filter { it.isFile }.map { it.length() }.sum() @@ -145,7 +146,7 @@ class SettingsFragment : Fragment() { override fun onDestroyView() { super.onDestroyView() - _binding = null + binding = null } } \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_dashboard.xml b/app/src/main/res/layout/fragment_dashboard.xml index b11aab3..d827618 100644 --- a/app/src/main/res/layout/fragment_dashboard.xml +++ b/app/src/main/res/layout/fragment_dashboard.xml @@ -36,7 +36,8 @@ + android:layout_height="match_parent" + android:saveEnabled="false" />