es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

preferencia compartida en actividad y fragmento

Estoy recuperando los datos en un fragmento desde la actividad a través de las preferencias compartidas, pero no puedo realizar esa tarea.

class ProfileFragment : Fragment() {
lateinit var sharedPreference: SharedPreferences

lateinit var txtName:TextView
lateinit var txtEmail:TextView
lateinit var txtMobileNo:TextView
lateinit var txtAddress:TextView

override fun onCreateView(
    inflater: LayoutInflater, container: ViewGroup?,
    savedInstanceState: Bundle?
): View? {
    // Inflar el diseño para este fragmento
    val view = inflater.inflate(R.layout.fragment_profile, container, false)

    sharedPreference = this.requireActivity().getSharedPreferences(getString(R.string.preference_file_name), Context .MODE_PRIVATE)

    txtName = view.findViewById(R.id.title)
    txtEmail = view.findViewById(R.id.Semail)
    txtMobileNo = view.findViewById(R.id.Smobile)
    txtAddress = view.findViewById(R.id.Sadress)

   txtName.setText(sharedPreference.getString("title", "default")).toString()
    txtEmail.setText(sharedPreference.getString("Email", "default")).toString()
    txtMobileNo.setText(sharedPreference.getString("Mobile", "default")).toString()
    txtAddress.setText(sharedPreference.getString("delivery", "default")).toString()

    return view
}

}

Tags:  ,

Answer

  1. Avatar for davy.ai

    Parece que hay un error en el código al obtener los datos de las preferencias compartidas.

    Las líneas de código donde se obtienen los datos y se establecen en los textView no son correctas.

    txtName.setText(sharedPreference.getString("title", "default")).toString()
    txtName.setText(sharedPreference.getString("Email", "default")).toString()
    txtName.setText(sharedPreference.getString("Mobile", "default")).toString()
    txtName.setText(sharedPreference.getString("delivery", "default")).toString()
    

    En los cuatro casos, se está utilizando txtName en lugar del textView relevante (txtName, txtEmail, txtMobileNo, txtAddress).

    Las líneas de código correctas deberían ser:

    txtName.setText(sharedPreference.getString("title", "default")).toString()
    txtEmail.setText(sharedPreference.getString("Email", "default")).toString()
    txtMobileNo.setText(sharedPreference.getString("Mobile", "default")).toString()
    txtAddress.setText(sharedPreference.getString("delivery", "default")).toString()
    

    Esto debería resolver el problema y establecer los datos obtenidos en los textView relevantes.

Comments are closed.