2024/4/8

跟着教程写todoapplication

fragment_add:

package com.example.to_do_application.fragments.add

import android.os.Bundle
import android.view.*
import android.widget.Toast
import androidx.fragment.app.Fragment
import androidx.fragment.app.viewModels
import androidx.navigation.fragment.findNavController
import com.example.to_do_application.R
import com.example.to_do_application.data.models.ToDoData
import com.example.to_do_application.data.viewmodel.ToDoViewModel
import com.example.to_do_application.databinding.FragmentAddBinding
import com.example.to_do_application.fragments.SharedViewModel

class AddFragment : Fragment() {

private val mToDoViewModel: ToDoViewModel by viewModels()
private val mSharedViewModel: SharedViewModel by viewModels()

private var _binding: FragmentAddBinding? = null
private val binding get() = _binding!!

override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
_binding = FragmentAddBinding.inflate(layoutInflater, container, false)
//Spinner Item Selected Listener
binding.spinner.onItemSelectedListener = mSharedViewModel.listener

val view = binding.root
//Set Menu
setHasOptionsMenu(true)

return view
}

override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
inflater.inflate(R.menu.add_fragment_menu,menu)
}

override fun onOptionsItemSelected(item: MenuItem): Boolean {
if(item.itemId == R.id.menu_add){
insertDataToDB()
}
return super.onContextItemSelected(item)
}

private fun insertDataToDB() {
val mTitle = binding.textView.text.toString()
val mPriority = binding.spinner.selectedItem.toString()
val mDescription = binding.editTextTextMultiLine.text.toString()

System.out.println(mPriority + "add")

val validation = mSharedViewModel.verifyDataFromUser(mTitle,mDescription)
if(validation){
//Insert Data to Database
val newData = ToDoData(
0,
mTitle,
mSharedViewModel.parsePriority(mPriority),
mDescription
)
mToDoViewModel.insertData(newData)
Toast.makeText(requireContext(),"Successfully added!",Toast.LENGTH_SHORT).show()
//Navigation Back
findNavController().navigate(R.id.action_addFragment_to_listFragment)
}else{
Toast.makeText(requireContext(),"Please fill out all fields.",Toast.LENGTH_SHORT).show()
}
}


}
posted @ 2024-04-08 18:50  Hbro  阅读(32)  评论(0)    收藏  举报