Jelajahi Sumber

fix 片段重复装载布局

robin 4 tahun lalu
induk
melakukan
bda4bb5366

+ 6 - 4
app/src/main/java/com/doverfuelingsolutions/issp/view/fragment/FragmentHolder.kt

@@ -25,10 +25,12 @@ class FragmentHolder : Fragment() {
     private var buttonHandler: (() -> Unit)? = null
 
     override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
-        binding = DataBindingUtil.inflate(inflater, R.layout.fragment_holder, container, false)
-        binding.lifecycleOwner = viewLifecycleOwner
-        binding.viewModel = holderViewModel
-        binding.actionButton.setOnClickListener { buttonHandler?.invoke() }
+        if (!this::binding.isInitialized) {
+            binding = DataBindingUtil.inflate(inflater, R.layout.fragment_holder, container, false)
+            binding.lifecycleOwner = viewLifecycleOwner
+            binding.viewModel = holderViewModel
+            binding.actionButton.setOnClickListener { buttonHandler?.invoke() }
+        }
         return binding.root
     }
 

+ 10 - 12
app/src/main/java/com/doverfuelingsolutions/issp/view/fragment/FragmentNozzle.kt

@@ -30,21 +30,19 @@ class FragmentNozzle : FragmentBasic() {
         )
     }
 
-    override fun onCreateView(
-        inflater: LayoutInflater,
-        container: ViewGroup?,
-        savedInstanceState: Bundle?
-    ): View? {
-        binding = DataBindingUtil.inflate(inflater, R.layout.fragment_nozzle, container, false)
+    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
+        if (!this::binding.isInitialized) {
+            binding = DataBindingUtil.inflate(inflater, R.layout.fragment_nozzle, container, false)
 
-        binding.nozzleList.layoutManager = GridLayoutManager(context, 4)
-        binding.nozzleList.adapter = chooseListAdapter
+            binding.nozzleList.layoutManager = GridLayoutManager(context, 4)
+            binding.nozzleList.adapter = chooseListAdapter
 
-        binding.smartRefreshLayout.setEnableLoadMore(false)
-        binding.smartRefreshLayout.setRefreshHeader(ClassicsHeader(context))
-        binding.smartRefreshLayout.setOnRefreshListener { handleNozzleRefresh() }
+            binding.smartRefreshLayout.setEnableLoadMore(false)
+            binding.smartRefreshLayout.setRefreshHeader(ClassicsHeader(context))
+            binding.smartRefreshLayout.setOnRefreshListener { handleNozzleRefresh() }
 
-        setToolBar(binding.fragmentToolbar)
+            setToolBar(binding.fragmentToolbar)
+        }
         return binding.root
     }
 

+ 0 - 1
app/src/main/java/com/doverfuelingsolutions/issp/view/fragment/FragmentOrderList.kt

@@ -34,7 +34,6 @@ class FragmentOrderList : FragmentBasic() {
     val viewModel = FragmentNozzleViewModel()
 
     override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
-        // TODO 其他 Fragment 也需要避免重复装载
         if (!this::binding.isInitialized) {
             binding = DataBindingUtil.inflate(inflater, R.layout.fragment_nozzle_orders, container, false)
 

+ 7 - 5
app/src/main/java/com/doverfuelingsolutions/issp/view/fragment/FragmentSelect.kt

@@ -24,12 +24,14 @@ class FragmentSelect : Fragment(),
     private lateinit var binding: FragmentSearchTypeBinding
 
     override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
-        binding = DataBindingUtil.inflate(inflater, R.layout.fragment_search_type, container, false)
-        binding.lifecycleOwner = this
-        binding.viewModel = viewModel
+        if (!this::binding.isInitialized) {
+            binding = DataBindingUtil.inflate(inflater, R.layout.fragment_search_type, container, false)
+            binding.lifecycleOwner = this
+            binding.viewModel = viewModel
 
-        binding.chooseOil.setOnClickListener(this)
-        binding.chooseNozzle.setOnClickListener(this)
+            binding.chooseOil.setOnClickListener(this)
+            binding.chooseNozzle.setOnClickListener(this)
+        }
         return binding.root
     }