diff --git a/app/src/main/java/com/casic/app/safetreecontroller/adapter/TabPageViewAdapter.kt b/app/src/main/java/com/casic/app/safetreecontroller/adapter/TabPageViewAdapter.kt index 93e8aa2..1abb061 100644 --- a/app/src/main/java/com/casic/app/safetreecontroller/adapter/TabPageViewAdapter.kt +++ b/app/src/main/java/com/casic/app/safetreecontroller/adapter/TabPageViewAdapter.kt @@ -1,5 +1,6 @@ package com.casic.app.safetreecontroller.adapter +import android.view.ViewGroup import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentManager import androidx.fragment.app.FragmentPagerAdapter @@ -14,4 +15,8 @@ override fun getCount(): Int = pages.size override fun getPageTitle(position: Int): CharSequence = titles[position] + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + //注释掉父类方法,一直不销毁Fragment + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/safetreecontroller/adapter/TabPageViewAdapter.kt b/app/src/main/java/com/casic/app/safetreecontroller/adapter/TabPageViewAdapter.kt index 93e8aa2..1abb061 100644 --- a/app/src/main/java/com/casic/app/safetreecontroller/adapter/TabPageViewAdapter.kt +++ b/app/src/main/java/com/casic/app/safetreecontroller/adapter/TabPageViewAdapter.kt @@ -1,5 +1,6 @@ package com.casic.app.safetreecontroller.adapter +import android.view.ViewGroup import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentManager import androidx.fragment.app.FragmentPagerAdapter @@ -14,4 +15,8 @@ override fun getCount(): Int = pages.size override fun getPageTitle(position: Int): CharSequence = titles[position] + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + //注释掉父类方法,一直不销毁Fragment + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt b/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt index 9c6dfcd..ea9ecbe 100644 --- a/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt +++ b/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt @@ -7,22 +7,32 @@ import android.net.wifi.WifiManager import android.os.Build import android.os.Bundle +import android.os.Handler +import android.os.Message import android.view.LayoutInflater import android.view.ViewGroup import com.casic.app.safetreecontroller.databinding.FragmentBaseSettingsBinding +import com.casic.app.safetreecontroller.utils.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getSystemService import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.BroadcastManager +import com.pengxh.kt.lite.utils.WeakReferenceHandler -class BaseSettingsFragment : KotlinBaseFragment() { +class BaseSettingsFragment : KotlinBaseFragment(), + Handler.Callback { + + companion object { + var weakReferenceHandler: WeakReferenceHandler? = null + } private val kTag = "BaseSettingsFragment" private val broadcastManager by lazy { BroadcastManager(requireContext()) } private val wifi by lazy { requireContext().getSystemService()!! } override fun initOnCreate(savedInstanceState: Bundle?) { + weakReferenceHandler = WeakReferenceHandler(this) broadcastManager.addAction( object : BroadcastReceiver() { override fun onReceive(context: Context?, intent: Intent?) { @@ -81,6 +91,13 @@ } + override fun handleMessage(msg: Message): Boolean { + if (msg.what == LocaleConstant.DEVICE_RESPONSE_CODE) { + binding.deviceCodeView.text = msg.obj as String + } + return true + } + override fun onResume() { super.onResume() binding.wifiNameView.text = wifi.connectionInfo.ssid diff --git a/app/src/main/java/com/casic/app/safetreecontroller/adapter/TabPageViewAdapter.kt b/app/src/main/java/com/casic/app/safetreecontroller/adapter/TabPageViewAdapter.kt index 93e8aa2..1abb061 100644 --- a/app/src/main/java/com/casic/app/safetreecontroller/adapter/TabPageViewAdapter.kt +++ b/app/src/main/java/com/casic/app/safetreecontroller/adapter/TabPageViewAdapter.kt @@ -1,5 +1,6 @@ package com.casic.app.safetreecontroller.adapter +import android.view.ViewGroup import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentManager import androidx.fragment.app.FragmentPagerAdapter @@ -14,4 +15,8 @@ override fun getCount(): Int = pages.size override fun getPageTitle(position: Int): CharSequence = titles[position] + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + //注释掉父类方法,一直不销毁Fragment + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt b/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt index 9c6dfcd..ea9ecbe 100644 --- a/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt +++ b/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt @@ -7,22 +7,32 @@ import android.net.wifi.WifiManager import android.os.Build import android.os.Bundle +import android.os.Handler +import android.os.Message import android.view.LayoutInflater import android.view.ViewGroup import com.casic.app.safetreecontroller.databinding.FragmentBaseSettingsBinding +import com.casic.app.safetreecontroller.utils.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getSystemService import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.BroadcastManager +import com.pengxh.kt.lite.utils.WeakReferenceHandler -class BaseSettingsFragment : KotlinBaseFragment() { +class BaseSettingsFragment : KotlinBaseFragment(), + Handler.Callback { + + companion object { + var weakReferenceHandler: WeakReferenceHandler? = null + } private val kTag = "BaseSettingsFragment" private val broadcastManager by lazy { BroadcastManager(requireContext()) } private val wifi by lazy { requireContext().getSystemService()!! } override fun initOnCreate(savedInstanceState: Bundle?) { + weakReferenceHandler = WeakReferenceHandler(this) broadcastManager.addAction( object : BroadcastReceiver() { override fun onReceive(context: Context?, intent: Intent?) { @@ -81,6 +91,13 @@ } + override fun handleMessage(msg: Message): Boolean { + if (msg.what == LocaleConstant.DEVICE_RESPONSE_CODE) { + binding.deviceCodeView.text = msg.obj as String + } + return true + } + override fun onResume() { super.onResume() binding.wifiNameView.text = wifi.connectionInfo.ssid diff --git a/app/src/main/java/com/casic/app/safetreecontroller/service/SocketConnectionService.kt b/app/src/main/java/com/casic/app/safetreecontroller/service/SocketConnectionService.kt index 23577c7..f702c79 100644 --- a/app/src/main/java/com/casic/app/safetreecontroller/service/SocketConnectionService.kt +++ b/app/src/main/java/com/casic/app/safetreecontroller/service/SocketConnectionService.kt @@ -8,6 +8,7 @@ import android.util.Log import com.casic.app.safetreecontroller.extensions.handleGasConcentration import com.casic.app.safetreecontroller.extensions.toHex +import com.casic.app.safetreecontroller.fragments.BaseSettingsFragment import com.casic.app.safetreecontroller.fragments.MethaneMonitorFragment import com.casic.app.safetreecontroller.utils.CommandCreator import com.casic.app.safetreecontroller.utils.LocaleConstant @@ -103,7 +104,13 @@ //取前6位解析设备编号 val deviceCode = bytes.take(6).toByteArray().toHex() - Log.d(kTag, "deviceCode: $deviceCode") + if (BaseSettingsFragment.weakReferenceHandler != null) { + val weakReferenceHandler = BaseSettingsFragment.weakReferenceHandler!! + val message = weakReferenceHandler.obtainMessage() + message.what = LocaleConstant.DEVICE_RESPONSE_CODE + message.obj = deviceCode + weakReferenceHandler.sendMessage(message) + } //取数据类型标志位,根据标志位解析不同的数据 val flag = (bytes[6].toInt() and 0xFF).toString(16).uppercase() diff --git a/app/src/main/java/com/casic/app/safetreecontroller/adapter/TabPageViewAdapter.kt b/app/src/main/java/com/casic/app/safetreecontroller/adapter/TabPageViewAdapter.kt index 93e8aa2..1abb061 100644 --- a/app/src/main/java/com/casic/app/safetreecontroller/adapter/TabPageViewAdapter.kt +++ b/app/src/main/java/com/casic/app/safetreecontroller/adapter/TabPageViewAdapter.kt @@ -1,5 +1,6 @@ package com.casic.app.safetreecontroller.adapter +import android.view.ViewGroup import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentManager import androidx.fragment.app.FragmentPagerAdapter @@ -14,4 +15,8 @@ override fun getCount(): Int = pages.size override fun getPageTitle(position: Int): CharSequence = titles[position] + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + //注释掉父类方法,一直不销毁Fragment + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt b/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt index 9c6dfcd..ea9ecbe 100644 --- a/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt +++ b/app/src/main/java/com/casic/app/safetreecontroller/fragments/BaseSettingsFragment.kt @@ -7,22 +7,32 @@ import android.net.wifi.WifiManager import android.os.Build import android.os.Bundle +import android.os.Handler +import android.os.Message import android.view.LayoutInflater import android.view.ViewGroup import com.casic.app.safetreecontroller.databinding.FragmentBaseSettingsBinding +import com.casic.app.safetreecontroller.utils.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.getSystemService import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.BroadcastManager +import com.pengxh.kt.lite.utils.WeakReferenceHandler -class BaseSettingsFragment : KotlinBaseFragment() { +class BaseSettingsFragment : KotlinBaseFragment(), + Handler.Callback { + + companion object { + var weakReferenceHandler: WeakReferenceHandler? = null + } private val kTag = "BaseSettingsFragment" private val broadcastManager by lazy { BroadcastManager(requireContext()) } private val wifi by lazy { requireContext().getSystemService()!! } override fun initOnCreate(savedInstanceState: Bundle?) { + weakReferenceHandler = WeakReferenceHandler(this) broadcastManager.addAction( object : BroadcastReceiver() { override fun onReceive(context: Context?, intent: Intent?) { @@ -81,6 +91,13 @@ } + override fun handleMessage(msg: Message): Boolean { + if (msg.what == LocaleConstant.DEVICE_RESPONSE_CODE) { + binding.deviceCodeView.text = msg.obj as String + } + return true + } + override fun onResume() { super.onResume() binding.wifiNameView.text = wifi.connectionInfo.ssid diff --git a/app/src/main/java/com/casic/app/safetreecontroller/service/SocketConnectionService.kt b/app/src/main/java/com/casic/app/safetreecontroller/service/SocketConnectionService.kt index 23577c7..f702c79 100644 --- a/app/src/main/java/com/casic/app/safetreecontroller/service/SocketConnectionService.kt +++ b/app/src/main/java/com/casic/app/safetreecontroller/service/SocketConnectionService.kt @@ -8,6 +8,7 @@ import android.util.Log import com.casic.app.safetreecontroller.extensions.handleGasConcentration import com.casic.app.safetreecontroller.extensions.toHex +import com.casic.app.safetreecontroller.fragments.BaseSettingsFragment import com.casic.app.safetreecontroller.fragments.MethaneMonitorFragment import com.casic.app.safetreecontroller.utils.CommandCreator import com.casic.app.safetreecontroller.utils.LocaleConstant @@ -103,7 +104,13 @@ //取前6位解析设备编号 val deviceCode = bytes.take(6).toByteArray().toHex() - Log.d(kTag, "deviceCode: $deviceCode") + if (BaseSettingsFragment.weakReferenceHandler != null) { + val weakReferenceHandler = BaseSettingsFragment.weakReferenceHandler!! + val message = weakReferenceHandler.obtainMessage() + message.what = LocaleConstant.DEVICE_RESPONSE_CODE + message.obj = deviceCode + weakReferenceHandler.sendMessage(message) + } //取数据类型标志位,根据标志位解析不同的数据 val flag = (bytes[6].toInt() and 0xFF).toString(16).uppercase() diff --git a/app/src/main/java/com/casic/app/safetreecontroller/utils/LocaleConstant.kt b/app/src/main/java/com/casic/app/safetreecontroller/utils/LocaleConstant.kt index 68830d5..b7be093 100644 --- a/app/src/main/java/com/casic/app/safetreecontroller/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/app/safetreecontroller/utils/LocaleConstant.kt @@ -22,8 +22,9 @@ /** * Handler Response Code * */ - const val QUERY_CPU_TEMPERATURE_RESPONSE_CODE = 20241004 - const val QUERY_METHANE_RESPONSE_CODE = 20241005 + const val QUERY_CPU_TEMPERATURE_RESPONSE_CODE = 20241001 + const val QUERY_METHANE_RESPONSE_CODE = 20241002 + const val DEVICE_RESPONSE_CODE = 20241003 /*** * SP Key