¿Por qué echas (EditText) findViewById a (EditText)?

Estoy empezando a aprender la programación de Android. Cuando declara objetos de tipo EditText y los inicializa más tarde, ¿por qué findViewById el contenido de EditText a EditText ?

¿ findViewById devuelve findViewById que necesita ser moldeado?

Como señaló daniel_c05, findViewById return type es View (que es la clase padre para EditText y otras clases para widgets visuales).

En Java, usted necesita emitir a un tipo específico en este caso – que es el requisito del lenguaje.

FindViewById encuentra una vista que fue identificada por el atributo id del XML que se procesó en onCreate (Bundle). Consulte: http://developer.android.com/reference/android/app/Activity.html#findViewById(int)

No sé cuánto de la experiencia de la programación que usted tiene con diversos idiomas. Pero este es un concepto bastante utilizado en muchos idiomas. Y todo es muy lógico. Permítanme explicar esto usando 2 enfoques: –

1) Si usted tiene alguna experiencia de codificación con C, lo encontraría muy similar. Por lo tanto, en C, vamos a decir cuando se utiliza malloc () para asignar un trozo de memoria, usted acaba de decir

 malloc(numberOfBytesYouNeed); 

Ahora lo que malloc hace es que reserva el número solicitado de bytes para usted (si está disponible) y devuelve un void * apuntando a la dirección inicial del bloque de memoria asignado.

Ahora bien, aunque usted tiene el puntero void con usted, aún así desea acceder a la memoria asignada de una manera determinada. Correcto ? Por lo tanto, es posible que desee acceder a la memoria asignada con un factor de escala de 2 (para números enteros) o 1 (para caracteres), etc.

Por otra parte, el puntero que malloc () devuelto será accesible para usted sólo si se asigna a uno de sus propios punteros. Ahora, como mencioné anteriormente, si desea almacenar 2 bytes enteros en la memoria recién asignada, entonces para acceder a esta matriz de memoria de enteros, necesitará un puntero de número entero.

Puesto que necesitará un puntero de número entero, tendrá que asignar el puntero void devuelto por malloc () al puntero de enteros. Algo como esto :-

 int * myPointer= malloc(numberOfBytesYouNeed); 

Pero como por la semántica del lenguaje, esto sería un error de tiempo de compilación. Debido a que sólo puede asignar punteros similares entre sí.

Por lo tanto, necesitará encasquetar el void * devuelto por malloc () a un int *. Algo como esto :-

 int * myPointer= (int*)malloc(numberOfBytesYouNeed); 

Ahora similar es el concepto en Android (o cualquier otro lenguaje de programación para esa materia) también. Como se explicó por los otros anteriores, findViewById tipo de retorno es View (que es la clase padre para EditText y otras clases para widgets visuales). Pero ya que, de hecho, desea acceder a este objeto View devuelto por findViewById como un objeto EditText, necesitará asignarlo a uno.

2) Ahora el otro ejemplo, sería muy básico. Digamos que usted sabe hablar sólo en alemán. Ahora te encuentras con una chica caliente que sabe hablar sólo en hindi. Pero sí entiende el alemán. Ahora si usted le pregunta en alemán, si ella estaría interesada en salir con usted en una fecha, (findViewById), definitivamente lo entendería. Pero como ella no sabe hablar alemán, ella respondería en hindi. Ahora, incluso si su respuesta fue SÍ, en realidad no sería muy útil para usted. Lo que necesitas aquí es un traductor para convertir (typecast) su respuesta, que es en hindi (View Object), en algo que usted entienda, es decir, alemán (objeto EditText)

Espero que la respuesta ayuda!

  • Android Studio informa "Código inalcanzable" con comparación de enum
  • Cifrar correo con SMIME y X.509 con BouncyCastle
  • Android - java - WeakReferences con un ArrayList?
  • Apache Commons IO en Android
  • No se puede instanciar actividad- ClassNotFoundException
  • Firebase getDownloadURL
  • Integrar roboelectric con android studio con gradle siempre da paquetes org.junit no existe error
  • Android Studio activity_main.xml editor de diseño no me deja arrastrar y soltar nada ...?
  • ListView: deshabilitar el clic / enfoque
  • SwipeListView uso NullPointerException
  • Nombres de los parámetros del método build-preserve de Gradle release
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.