【发布时间】:2021-11-19 19:31:00
【问题描述】:
我在 DialogFragment 中有一个 Edittext 并创建了一个新组。当我按“确定”时,组已创建但没有字符串。
我试着弄清楚,但我不知道哪里错了。
我的 DialogFragment:
class NewCategory(val listener: NewCategoryCreateListener) : DialogFragment() {
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val view = requireActivity()
val newCategoryView = view.layoutInflater.inflate(R.layout.new_category, null)
val txtNewCat = newCategoryView.findViewById<EditText>(R.id.etNewCategory)
val newCat = txtNewCat.text.toString()
return AlertDialog.Builder(requireContext())
.setView(newCategoryView)
.setTitle("Create new category")
.setPositiveButton("OK") {di, i ->
listener.newCategoryCreate(newCat)
}
.setNegativeButton("Cancel") { di, i -> }
.create()
}
interface NewCategoryCreateListener{
fun newCategoryCreate(text: String)
}
}
我的 MainFragment:
class MainFragment : Fragment(), NewCategory.NewCategoryCreateListener {
private var _binding: FragmentMainBinding? = null
private val binding
get() = _binding!!
private lateinit var shoppingListViewModel: ShoppingListViewModel
private lateinit var categoryAdapter: CategoryAdapter
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.categoryRV.layoutManager = LinearLayoutManager(requireContext())
shoppingListViewModel.allCategories.observe(viewLifecycleOwner, {
updateCategories(it)
})
binding.addCategory.setOnClickListener {
val newCategory = NewCategory(this)
newCategory.show(childFragmentManager, "NewCategory")
}
}
private fun updateCategories(list: List<Category>) {
categoryAdapter = CategoryAdapter(list)
binding.categoryRV.adapter = categoryAdapter
}
override fun newCategoryCreate(text: String) {
val newCat = Category(text)
shoppingListViewModel.insertCategory(newCat)
}
}
我做错了什么?
【问题讨论】:
标签: android-studio kotlin fragment dialogfragment