From e98e5ebf6a786a778249e09028782f90fd601f92 Mon Sep 17 00:00:00 2001 From: cloudroam <cloudroam> Date: 星期五, 14 三月 2025 16:07:33 +0800 Subject: [PATCH] fix: 1 --- app/src/main/java/com/example/firstapp/ui/home/HomeFragment.kt | 93 +++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 91 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/example/firstapp/ui/home/HomeFragment.kt b/app/src/main/java/com/example/firstapp/ui/home/HomeFragment.kt index 4a96e85..b272afa 100644 --- a/app/src/main/java/com/example/firstapp/ui/home/HomeFragment.kt +++ b/app/src/main/java/com/example/firstapp/ui/home/HomeFragment.kt @@ -1,11 +1,15 @@ package com.example.firstapp.ui.home +import android.content.BroadcastReceiver +import android.content.Context import android.content.Intent +import android.content.IntentFilter import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.TextView +import androidx.core.content.ContextCompat import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager @@ -26,8 +30,9 @@ private lateinit var homeViewModel: HomeViewModel private lateinit var expressAdapter: ExpressAdapter -// private lateinit var financeAdapter: FinanceAdapter + // private lateinit var financeAdapter: FinanceAdapter // private lateinit var memorialAdapter: MemorialAdapter + private lateinit var dataUpdateReceiver: BroadcastReceiver //onCreateView这个方法创建后被调用,通常是初始化视图组件和观察者 override fun onCreateView( @@ -47,8 +52,23 @@ //调用这个方法来设置 RecyclerView用于设置 RecyclerView 的布局和适配器。 setupRecyclerViews() + setupTabSwitching() //调用这个方法来观察 ViewModel 中的数据变化 observeViewModelData() + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + // 创建广播接收器 + dataUpdateReceiver = object : BroadcastReceiver() { + override fun onReceive(context: Context, intent: Intent) { + if (intent.action == "com.example.firstapp.DATA_UPDATED") { + // 收到数据更新广播时重新加载数据 + homeViewModel.loadExpressData() + } + } + } } private fun setupRecyclerViews() { @@ -56,7 +76,7 @@ layoutManager = LinearLayoutManager(context) expressAdapter = ExpressAdapter() adapter = expressAdapter - + // 设置点击监听 expressAdapter.setOnPackageClickListener { group, pack -> // 跳转到取件页面 @@ -83,6 +103,51 @@ // } } + private fun setupTabSwitching() { + binding.apply { + // 设置初始状态 + tabExpress.setTextColor(ContextCompat.getColor(requireContext(), R.color.tab_selected)) + tabFinance.setTextColor(ContextCompat.getColor(requireContext(), R.color.gray)) + others.setTextColor(ContextCompat.getColor(requireContext(), R.color.gray)) + + // 快递标签点击事件 + tabExpress.setOnClickListener { + expressContent.visibility = View.VISIBLE + financeContent.visibility = View.GONE + tabExpress.setTextColor(ContextCompat.getColor(requireContext(), R.color.tab_selected)) + tabFinance.setTextColor(ContextCompat.getColor(requireContext(), R.color.gray)) + others.setTextColor(ContextCompat.getColor(requireContext(), R.color.gray)) + tabExpress.textSize = 16f + tabFinance.textSize = 14f + others.textSize = 14f + } + + // 财务标签点击事件 + tabFinance.setOnClickListener { + expressContent.visibility = View.GONE + financeContent.visibility = View.VISIBLE + tabExpress.setTextColor(ContextCompat.getColor(requireContext(), R.color.gray)) + tabFinance.setTextColor(ContextCompat.getColor(requireContext(), R.color.tab_selected)) + others.setTextColor(ContextCompat.getColor(requireContext(), R.color.gray)) + tabExpress.textSize = 14f + tabFinance.textSize = 16f + others.textSize = 14f + } + + // 其他标签点击事件 + others.setOnClickListener { + expressContent.visibility = View.GONE + financeContent.visibility = View.GONE + tabExpress.setTextColor(ContextCompat.getColor(requireContext(), R.color.gray)) + tabFinance.setTextColor(ContextCompat.getColor(requireContext(), R.color.gray)) + others.setTextColor(ContextCompat.getColor(requireContext(), R.color.tab_selected)) + tabExpress.textSize = 14f + tabFinance.textSize = 14f + others.textSize = 16f + } + } + } + //这个方法用于观察 homeViewModel 中的 expressItems 数据。 private fun observeViewModelData() { //当 expressItems 数据发生变化时,更新 RecyclerView 的数据。 @@ -100,6 +165,30 @@ // } } + override fun onResume() { + super.onResume() + // 使用 ContextCompat 注册广播接收器,并指定 RECEIVER_NOT_EXPORTED 标志 + ContextCompat.registerReceiver( + requireContext(), + dataUpdateReceiver, + IntentFilter("com.example.firstapp.DATA_UPDATED"), + ContextCompat.RECEIVER_NOT_EXPORTED + ) + // 加载数据 + homeViewModel.loadExpressData() + } + + override fun onPause() { + super.onPause() + try { + // 取消注册广播接收器 + requireContext().unregisterReceiver(dataUpdateReceiver) + } catch (e: Exception) { + // 处理可能的异常 + e.printStackTrace() + } + } + override fun onDestroyView() { super.onDestroyView() _binding = null -- Gitblit v1.9.3