2017-07-07 2 views
-2

J'ai cherché beaucoup sur Internet comment puis-je utiliser setFocusable(), setText(), setError() etc méthodes etc sur editText(s) dans Android avec Kotlin (Je sais que le fait que nous pouvons utiliser les méthodes mentionnées ci-dessus en java) mais je n'ai pas été en mesure de trouver la solution exacte qui fonctionnera pour moi.comment définir le texte, mise au point, l'erreur sur editText dans Android avec Kotlin

J'utilise 1.) Volley pour http appels 2.) plugin Kotlin pour le studio avec la version android = '1.1.3-2' 3.) anko bibliothèque

problèmes que je suis lorsque l'application est en cours d'exécution: 1.) La méthode setError() n'est pas appelée. 2.) je ne suis pas capable d'utiliser setText() et setFocus() sur editText.

Veuillez noter que j'ai besoin de la solution (s) dans Kotlin pas Java.

Merci d'avance!

private fun askAppointment() { 

    if (editTextPersonName?.text.isNullOrEmpty()) { 
     editTextPersonName?.error ="Person Name cannot be empty." 
     return 
    } else if (editTextPersonMobile?.text.isNullOrEmpty()) { 
     editTextPersonMobile?.error = "Person Mobile cannot be empty." 
     return 
    } else if (editTextPersonEmail?.text.isNullOrEmpty()) { 
     editTextPersonEmail?.error = "Person Email cannot be empty." 
     return 
    } else if (editTextSubject?.text.isNullOrEmpty()) { 
     editTextSubject?.error = "Subject cannot be empty." 
     return 
    } else if (editTextDescription?.text.isNullOrEmpty()) { 
     editTextDescription?.error = "Description cannot be empty." 
     return 
    } else if (editTextAppointmentDate?.text.isNullOrEmpty()) { 
     editTextAppointmentDate?.error = "Appointment Date cannot be empty." 
     return 
    } else if (editTextAppointmentTime?.text.isNullOrEmpty()) { 
     editTextAppointmentTime?.error = "Appointment Time cannot be empty." 
     return 
    } 
+0

S'il vous plaît garder votre code petit. Il n'est pas clair où vous avez le problème, il suffit d'ajouter le code nécessaire avec le problème contenant. – guenhter

+0

@guenhter u peut me dire comment puis-je utiliser setFocus(), setText() sur editText dans Android avec Kotlin ... n aussi SetError() –

+0

Non, je ne suis pas en vous android et ne peut pas donner des conseils, mais si vous faites une meilleure description (https://stackoverflow.com/help/mcve exemple minimal, complet et vérifiable) la chance est plus élevé que tout le monde vous aide et non pas seulement downrates votre question. – guenhter

Répondre

1

Ceci est simple. Supposons que etEmail est le EditText. Vous pouvez définir un texte comme celui-ci

etEmail?.setText("some text") 

Et d'erreur, vous pouvez utiliser ce

etEmail?.error = "This is error" 

Et pour voir foucus vous pouvez essayer celui-ci, mais je ne suis pas sûr à ce sujet.

etEmail?.isFocusable = false 

J'espère que cela vous aidera.

Vérifiez la capture d'écran de travail du code ci-dessus.

enter image description here

utiliser cette logique dans askAppointment()

private fun askAppointment() { 

    if (editTextPersonName?.text.isNullOrEmpty()) { 
     editTextPersonName?.error = "Person Name cannot be empty." 
     return 
    } else if (editTextPersonMobile?.text.isNullOrEmpty()) { 
     editTextPersonMobile?.error = "Person Mobile cannot be empty." 
     return 
    } else if (editTextPersonEmail?.text.isNullOrEmpty()) { 
     editTextPersonEmail?.error = "Person Email cannot be empty." 
     return 
    } else if (editTextSubject?.text.isNullOrEmpty()) { 
     editTextSubject?.error = "Subject cannot be empty." 
     return 
    } else if (editTextDescription?.text.isNullOrEmpty()) { 
     editTextDescription?.error = "Description cannot be empty." 
     return 
    } else if (editTextAppointmentDate?.text.isNullOrEmpty()) { 
     editTextAppointmentDate?.error = "Appointment Date cannot be empty." 
     return 
    } else if (editTextAppointmentTime?.text.isNullOrEmpty()) { 
     editTextAppointmentTime?.error = "Appointment Time cannot be empty." 
     return 
    } else { 
     //creating volley string request 
     val stringRequest = object : StringRequest(Request.Method.POST, URL, 
       Response.Listener<String> { response -> 
        try { 
         val jsonObject = JSONObject(response) 
         val feedback = jsonObject.getString("response") 
         toast("$feedback") 
         //finish()  //finish Activity after sending request 
        } catch (e: JSONException) { 
         e.printStackTrace() 
        } 
       }, 
       object : Response.ErrorListener { 
        override fun onErrorResponse(volleyError: VolleyError) { 
         toast("error :(") 
        } 
       }) { 
      @Throws(AuthFailureError::class) 
      override fun getParams(): Map<String, String> { 
       val params = HashMap<String, String>() 
       params.put("personName", editTextPersonName?.text.toString()) 
       params.put("personMobile", editTextPersonMobile?.text.toString()) 
       params.put("personEmail", editTextPersonEmail?.text.toString()) 
       params.put("subject", editTextSubject?.text.toString()) 
       params.put("description", editTextDescription?.text.toString()) 
       params.put("appointMentDate", editTextAppointmentDate?.text.toString()) 
       params.put("appointMentTime", editTextAppointmentTime?.text.toString()) 
       return params 
      } 
     } 

     //adding request to queue 
     AppController.instance?.addToRequestQueue(stringRequest) 
    } 
} 
+0

etEmail? .isFocusable = false fonctionne correctement, mais les deux autres méthodes ne fonctionnent pas. –

+0

Je viens de tester ceux-ci dans mon projet et ceux-ci fonctionnent très bien. –

+0

J'ai attaché la capture d'écran, vous pouvez vérifier. Il doit y avoir quelque chose que vous ne faites pas correctement dans votre code. Pouvez-vous poster le code connexe. –