我对编码还比较陌生,现在遇到了一个似乎无法解决的问题。
我最近才改用基于片段的方法,而不是基于活动的方法,我的问题(我认为)是我的片段在加载另一个片段时被破坏了。
您看到,在我的Home Fragment(在Android Studio内部自动生成)上,我有一个recyclerView来显示用户的“产品”。当我切换到另一个片段,然后再返回时,Home片段需要花费一段时间(以及使用大量CPU)来加载。我怀疑这是因为片段在切换时被破坏了。由于我使用“底部导航活动”的名称使用Android Studio的内置片段布局,因此我不知道如何调整导航管理器。有什么办法可以解决这个问题?
这是我的HomeFragment代码,很抱歉,如果它伤害到您的眼睛。
class HomeFragment : Fragment() {
private lateinit var mAuth: FirebaseAuth
private lateinit var mDatabase: DatabaseReference
private lateinit var mStorage: FirebaseStorage
private lateinit var gridLayoutManager: GridLayoutManager
companion object {
lateinit var productAdapter: RecyclerView
}
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val root = inflater.inflate(R.layout.fragment_home, container, false)
return root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
//Initialize firebase references
mAuth = FirebaseAuth.getInstance()
mDatabase = FirebaseDatabase.getInstance().reference
mStorage = FirebaseStorage.getInstance()
//Get user ID
val uid = mAuth.currentUser!!.uid
//Initialize companion objects
productAdapter = fh_productView
fillProductView(uid)
fh_addProduct.setOnClickListener {
startActivity(Intent(context, AddProductActivity::class.java))
}
}
private fun fillProductView(uid: String) {
val productList = MainActivity.productList
fh_productView.apply {
gridLayoutManager = GridLayoutManager(context, 3, LinearLayoutManager.VERTICAL, false)
val topSpacingItemDecoration = TopSpacingItemDecoration(20)
addItemDecoration(topSpacingItemDecoration)
fh_productView.layoutManager = gridLayoutManager
fh_productView.setHasFixedSize(true)
adapter = ProductsAdapter(productList, "HomeFragment")
}
}
}