Kotlin 上的捆绑包

问题描述 投票:0回答:1

大家。我的bundle()函数有问题。假设我有片段A、B和C。我想将数据从片段A发送到片段C。我只想将数据从A发送到C并从页面A切换到页面B。

This is my A page: This is my C page:

在页面上我写导航到日期操作。但当我运行它时,导航到 C 页面。为什么?

binding.nextdate.setOnClickListener { nextdateaction() sendbundle() }
'''

    ***package com.example.rebolutbank.features.account

import android.graphics.Color
import android.os.Bundle
import android.util.Patterns
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.core.text.isDigitsOnly
import androidx.fragment.app.Fragment
import androidx.fragment.app.viewModels
import androidx.navigation.fragment.findNavController
import com.example.rebolutbank.R
import com.example.rebolutbank.databinding.FragmentSignUpBinding
import com.google.firebase.Firebase
import com.google.firebase.auth.auth
import com.google.firebase.firestore.firestore
import dagger.hilt.android.AndroidEntryPoint

@AndroidEntryPoint
class SignUpFragment : Fragment() {

    private lateinit var binding: FragmentSignUpBinding
    private val firestore = Firebase.firestore
    val viewModel : SignUpViewModel by viewModels()
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
    }

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        binding = FragmentSignUpBinding.inflate(inflater)
        binding.viewModel = viewModel
        binding.lifecycleOwner = this

        signUp()

        binding.nextdate.setOnClickListener {
           nextdateaction()
            sendbundle()
        }



        return binding.root
    }
    private fun sendbundle(){
        val username = binding.nameuser.text.toString()
        val lastname = binding.lastnameuser.text.toString()
        val country = binding.usercountry.text.toString()

        val passCodeFragment = PassCodeFragment()
        val bundle = Bundle().apply {
            putString("username",username)
            putString("lastname",lastname)
            putString("usercountry",country)
        }
        passCodeFragment.arguments = bundle
    }
    private fun signUp(){
        binding.nameuser.setOnFocusChangeListener{_,focused->
            if(!focused){
                binding.nameuserlayout.helperText = valid_name_lastname()

            }
        }

        binding.lastnameuser.setOnFocusChangeListener{_, focused->
            if(!focused){
                binding.lastnameuserlayout.helperText = valid_name_lastname()
            }
        }
    }

    private fun nextdateaction(){

        if (binding.nameuser.text.isNullOrEmpty()){
            binding.anytxt2.text = "Add your Name"
            binding.anytxt2.setTextColor(Color.RED)
        }
        else if (binding.lastnameuser.text.isNullOrEmpty()){
            binding.anytxt2.text = "Add your Lastname"
            binding.anytxt2.setTextColor(Color.RED)
        }
        else if(binding.usercountry.text.isNullOrEmpty()){
            binding.anytxt2.text = "Add your Country"
            binding.anytxt2.setTextColor(Color.RED)
        }
        else{
            var action = SignUpFragmentDirections.actionSignUpFragmentToBirthDateFragment()
            findNavController().navigate(action)

        }

    }

    private fun valid_name_lastname() : String? {

        val nameText = binding.nameuser.text.toString()
        val lastnameText = binding.lastnameuser.text.toString()


        fun isAlpha(input: String): Boolean {
            return input.all { it.isLetter() }
        }

        if (!isAlpha(nameText) || !isAlpha(lastnameText)) {
            return "Use only alpha"
        }
        // Function to check if a string consists only of alphabetic characters
        return null
    }





}***

'''

android database kotlin navigation bundle
1个回答
0
投票

sendbundle
方法中,您正在实例化 Fragment 类,在正常情况下您不应该自己执行此操作。 您仅设置该实例的
arguments
属性。 考虑使用
androidx.navigation
navigation-safe-args-gradle-plugin
通过类型安全的原语参数从一个片段导航到另一个片段。设置导航图,并使用
NavController$navigate
方法生成适当的操作。

按照官方android文档进行导航

© www.soinside.com 2019 - 2024. All rights reserved.