Flights the application after removal of the file while moving to the main fragment



  • Why does an annex fly out after the removal to the main fragment?

    Here are the logs:

    2021-11-15 15:30:56.805 25103-25103/com.vinson.afpoffice E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.vinson.afpoffice, PID: 25103
    java.lang.IllegalStateException: View com.google.android.material.textview.MaterialTextView{acbca21 VFED..C.. ...P.... 55,368-1025,491 #7f0900a5 app:id/dialog_yes} does not have a NavController set
        at androidx.navigation.Navigation.findNavController(Navigation.kt:71)
        at com.vinson.afpoffice.fragments.EditBoardFragment.onOptionsItemSelected$lambda-1(EditBoardFragment.kt:115)
        at com.vinson.afpoffice.fragments.EditBoardFragment.$r8$lambda$HkEKWKoCHyt1vjKOCRqn5FSEUFQ(Unknown Source:0)
        at com.vinson.afpoffice.fragments.EditBoardFragment$$ExternalSyntheticLambda2.onClick(Unknown Source:2)
        at android.view.View.performClick(View.java:7496)
        at android.view.View.performClickInternal(View.java:7473)
        at android.view.View.access$3600(View.java:831)
        at android.view.View$PerformClick.run(View.java:28632)
        at android.os.Handler.handleCallback(Handler.java:938)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:236)
        at android.app.ActivityThread.main(ActivityThread.java:7876)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:656)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:967)
    

    Here's the code:

    package com.vinson.afpoffice.fragments
    

    import android.os.Bundle
    import android.text.TextUtils
    import android.text.format.DateFormat
    import android.view.*
    import android.widget.EditText
    import android.widget.TextView
    import androidx.core.widget.addTextChangedListener
    import androidx.fragment.app.Fragment
    import androidx.fragment.app.viewModels
    import androidx.navigation.Navigation
    import androidx.navigation.fragment.navArgs
    import com.google.android.material.bottomsheet.BottomSheetDialog
    import com.vinson.afpoffice.Model.Boards
    import com.vinson.afpoffice.R
    import com.vinson.afpoffice.databinding.FragmentEditBoardBinding
    import com.vinson.afpoffice.viewModel.BoardsViewModel
    import java.math.RoundingMode
    import java.text.DecimalFormat
    import java.util.*

    class EditBoardFragment : Fragment() {

    private val oldBoards by navArgs<EditBoardFragmentArgs>()
    private lateinit var binding: FragmentEditBoardBinding
    private val viewModel: BoardsViewModel by viewModels()
    
    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View {
        // Inflate the layout for this fragment
    
        binding = FragmentEditBoardBinding.inflate(layoutInflater, container, false)
    
        setHasOptionsMenu(true)
    
        binding.fullName.setText(oldBoards.data.name)
        binding.plan.setText(oldBoards.data.plan)
        binding.plan1.setText(oldBoards.data.plan1)
        binding.plan2.setText(oldBoards.data.plan2)
        binding.plan3.setText(oldBoards.data.plan3)
        binding.fact.setText(oldBoards.data.fact)
        binding.fact1.setText(oldBoards.data.fact1)
        binding.fact2.setText(oldBoards.data.fact2)
        binding.fact3.setText(oldBoards.data.fact3)
        binding.percentOfComp.text = oldBoards.data.comp
        binding.percentOfComp1.text = oldBoards.data.comp1
        binding.percentOfComp2.text = oldBoards.data.comp2
        binding.percentOfComp3.text = oldBoards.data.comp3
    
        binding.btnSaveBoard.setOnClickListener {
            updateBoards(it)
        }
    
        return binding.root
    }
    
    private fun updateBoards(it: View?) {
        val name = binding.fullName.text.toString()
        val plan = binding.plan.text.toString()
        val plan1 = binding.plan1.text.toString()
        val plan2 = binding.plan2.text.toString()
        val plan3 = binding.plan3.text.toString()
        val fact = binding.fact.text.toString()
        val fact1 = binding.fact1.text.toString()
        val fact2 = binding.fact2.text.toString()
        val fact3 = binding.fact3.text.toString()
        val comp = binding.percentOfComp.text.toString()
        val comp1 = binding.percentOfComp1.text.toString()
        val comp2 = binding.percentOfComp2.text.toString()
        val comp3 = binding.percentOfComp3.text.toString()
        val d = Date()
        val boardDate: CharSequence = DateFormat.format("d MMMM, yyyy ", d.time)
    
        val data = Boards(
            oldBoards.data.id,
            name = name,
            plan = plan,
            plan1 = plan1,
            plan2 = plan2,
            plan3 = plan3,
            fact = fact,
            fact1 = fact1,
            fact2 = fact2,
            fact3 = fact3,
            comp = comp,
            comp1 = comp1,
            comp2 = comp2,
            comp3 = comp3,
            date = boardDate.toString()
        )
        viewModel.updateBoards(data)
        Navigation.findNavController(it!!).navigate(R.id.action_editBoardFragment_to_boardFragment)
    }
    
    override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
        inflater.inflate(R.menu.delete, menu)
        super.onCreateOptionsMenu(menu, inflater)
    }
    
    override fun onOptionsItemSelected(item: MenuItem): Boolean {
        if (item.itemId == R.id.menu_delete) {
            val bottomSheet =
                BottomSheetDialog(requireContext())
            bottomSheet.setContentView(R.layout.dialog_delete)
    
            val textviewYes = bottomSheet.findViewById<TextView>(R.id.dialog_yes)
            val textviewNo = bottomSheet.findViewById<TextView>(R.id.dialog_no)
    
            textviewYes?.setOnClickListener {
                viewModel.deleteBoards(oldBoards.data.id)
                Navigation.findNavController(it!!).navigate(R.id.action_editBoardFragment_to_boardFragment)
            }
    
            textviewNo?.setOnClickListener {
                bottomSheet.dismiss()
            }
    
            bottomSheet.show()
        }
        return super.onOptionsItemSelected(item)
    }
    
    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
    
        val plan = view.findViewById<EditText>(R.id.plan)
        val fact = view.findViewById<EditText>(R.id.fact)
    
        val resultTextView = view.findViewById<TextView>(R.id.percent_of_comp)
    
    
    
        fact.addTextChangedListener {
            if (!TextUtils.isEmpty(plan.text) && !TextUtils.isEmpty(fact.text)) {
    
                val firstN = plan.text.toString().toDouble()
                val secondN = fact.text.toString().toDouble()
    
                val df = DecimalFormat("#.##")
    
                df.roundingMode = RoundingMode.FLOOR
    
                val result = secondN / firstN * 100
    
                "${df.format(result)}%".also { resultTextView.text = it }
    
            } else {
                resultTextView.text = ""
            }
        }
        plan.addTextChangedListener {
            if (!TextUtils.isEmpty(plan.text) && !TextUtils.isEmpty(fact.text)) {
    
                val firstN = plan.text.toString().toDouble()
                val secondN = fact.text.toString().toDouble()
    
                val df = DecimalFormat("#.##")
    
                df.roundingMode = RoundingMode.FLOOR
    
                val result = secondN / firstN * 100
    
                "${df.format(result)}%".also { resultTextView.text = it }
    
            } else {
                resultTextView.text = ""
            }
        }
        val plan1 = view.findViewById<EditText>(R.id.plan1)
        val fact1 = view.findViewById<EditText>(R.id.fact1)
    
        val resultTextView1 = view.findViewById<TextView>(R.id.percent_of_comp1)
    
    
    
        fact1.addTextChangedListener {
            if (!TextUtils.isEmpty(plan1.text) && !TextUtils.isEmpty(fact1.text)) {
    
                val firstN = plan1.text.toString().toDouble()
                val secondN = fact1.text.toString().toDouble()
    
                val df = DecimalFormat("#.##")
    
                df.roundingMode = RoundingMode.FLOOR
    
                val result = secondN / firstN * 100
    
                "${df.format(result)}%".also { resultTextView1.text = it }
    
            } else {
                resultTextView1.text = ""
            }
        }
        plan1.addTextChangedListener {
            if (!TextUtils.isEmpty(plan1.text) && !TextUtils.isEmpty(fact1.text)) {
    
                val firstN = plan1.text.toString().toDouble()
                val secondN = fact1.text.toString().toDouble()
    
                val df = DecimalFormat("#.##")
    
                df.roundingMode = RoundingMode.FLOOR
    
                val result = secondN / firstN * 100
    
                "${df.format(result)}%".also { resultTextView1.text = it }
    
            } else {
                resultTextView1.text = ""
            }
        }
        val plan2 = view.findViewById<EditText>(R.id.plan2)
        val fact2 = view.findViewById<EditText>(R.id.fact2)
    
        val resultTextView2 = view.findViewById<TextView>(R.id.percent_of_comp2)
    
    
    
        fact2.addTextChangedListener {
            if (!TextUtils.isEmpty(plan2.text) && !TextUtils.isEmpty(fact2.text)) {
    
                val firstN = plan2.text.toString().toDouble()
                val secondN = fact2.text.toString().toDouble()
    
                val df = DecimalFormat("#.##")
    
                df.roundingMode = RoundingMode.FLOOR
    
                val result = secondN / firstN * 100
    
                "${df.format(result)}%".also { resultTextView2.text = it }
    
            } else {
                resultTextView2.text = ""
            }
        }
        plan2.addTextChangedListener {
            if (!TextUtils.isEmpty(plan2.text) && !TextUtils.isEmpty(fact2.text)) {
    
                val firstN = plan2.text.toString().toDouble()
                val secondN = fact2.text.toString().toDouble()
    
                val df = DecimalFormat("#.##")
    
                df.roundingMode = RoundingMode.FLOOR
    
                val result = secondN / firstN * 100
    
                "${df.format(result)}%".also { resultTextView2.text = it }
    
            } else {
                resultTextView2.text = ""
            }
        }
        val plan3 = view.findViewById<EditText>(R.id.plan3)
        val fact3 = view.findViewById<EditText>(R.id.fact3)
    
        val resultTextView3 = view.findViewById<TextView>(R.id.percent_of_comp3)
    
    
    
        fact3.addTextChangedListener {
            if (!TextUtils.isEmpty(plan3.text) && !TextUtils.isEmpty(fact3.text)) {
    
                val firstN = plan3.text.toString().toDouble()
                val secondN = fact3.text.toString().toDouble()
    
                val df = DecimalFormat("#.##")
    
                df.roundingMode = RoundingMode.FLOOR
    
                val result = secondN / firstN * 100
    
                "${df.format(result)}%".also { resultTextView3.text = it }
    
            } else {
                resultTextView3.text = ""
            }
        }
        plan3.addTextChangedListener {
            if (!TextUtils.isEmpty(plan3.text) && !TextUtils.isEmpty(fact3.text)) {
    
                val firstN = plan3.text.toString().toDouble()
                val secondN = fact3.text.toString().toDouble()
    
                val df = DecimalFormat("#.##")
    
                df.roundingMode = RoundingMode.FLOOR
    
                val result = secondN / firstN * 100
    
                "${df.format(result)}%".also { resultTextView3.text = it }
    
            } else {
                resultTextView3.text = ""
            }
        }
    }
    

    }



  • It's probably the problem with how you're looking for a controller. Try and replace

    Navigation.findNavController(it!!).navigate(R.id.action_editBoardFragment_to_boardFragment)

    Navigation.findNavController(view!!).navigate(R.id.action_editBoardFragment_to_boardFragment)



Suggested Topics

  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2