| | |
| | | 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 |
| | |
| | | |
| | | 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( |
| | |
| | | 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 -> |
| | | // 跳转到取件页面 |
| | |
| | | // } |
| | | } |
| | | |
| | | 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 |