From cf9bc941487df8dfb0780d3e8f1281f4e397b5fa Mon Sep 17 00:00:00 2001 From: cloudroam <cloudroam> Date: 星期四, 06 三月 2025 10:33:57 +0800 Subject: [PATCH] fix: 3 --- app/src/main/java/com/example/firstapp/ui/home/HomeFragment.kt | 61 ++++++++++++++++++++++++++++-- 1 files changed, 56 insertions(+), 5 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 5cdc5e0..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,15 +1,21 @@ 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 import androidx.recyclerview.widget.RecyclerView import com.example.firstapp.R +import com.example.firstapp.activity.PickupActivity import com.example.firstapp.adapter.ExpressAdapter import com.example.firstapp.core.Core import com.example.firstapp.databinding.FragmentHomeBinding @@ -24,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( @@ -49,15 +56,35 @@ 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() { - // 快递列表 - //layoutManager = LinearLayoutManager(context):设置 RecyclerView 的布局管理器为线性布局管理器,表示列表是垂直排列的。 - //创建一个 ExpressAdapter 的实例,用于提供 RecyclerView 的数据。 - //将适配器设置给 RecyclerView,以便显示数据。 binding.expressRecycler.apply { layoutManager = LinearLayoutManager(context) expressAdapter = ExpressAdapter() adapter = expressAdapter + + // 设置点击监听 + expressAdapter.setOnPackageClickListener { group, pack -> + // 跳转到取件页面 + val intent = Intent(requireContext(), PickupActivity::class.java).apply { + putExtra("station_name", group.stationName) + putExtra("company", pack.company) + } + startActivity(intent) + } } // // 财务列表 @@ -92,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