From 1097c45d8d6aa4b74a50e8d9a99dedab73f2bbad Mon Sep 17 00:00:00 2001 From: cloudroam <cloudroam> Date: 星期五, 28 二月 2025 13:35:07 +0800 Subject: [PATCH] add: 优化首页自动同步历史短信,和实时刷新包裹列表 --- app/src/main/java/com/example/firstapp/ui/home/HomeFragment.kt | 47 +++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 45 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..be80342 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( @@ -51,12 +56,26 @@ 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() { binding.expressRecycler.apply { layoutManager = LinearLayoutManager(context) expressAdapter = ExpressAdapter() adapter = expressAdapter - + // 设置点击监听 expressAdapter.setOnPackageClickListener { group, pack -> // 跳转到取件页面 @@ -100,6 +119,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