¿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!

  • Cómo cargar Android v7 soporte de la biblioteca en SBT Android Project?
  • ¿Cómo configurar el color de fondo personalizado mientras se toca el elemento?
  • Poste HTTP seguro en Android
  • Toast Stop - getConnectedNodes
  • ¿Dónde está la vista previa del diseño de Android Studio?
  • Android Proguard - sólo ofuscación
  • ¿Cómo saber si estoy conectado correctamente a mi número de salida en Android?
  • ¿Qué es una buena manera de almacenar un objeto de ubicación?
  • ¿No se puede crear el archivo MDS Hash?
  • Intención no se abre en el siguiente código
  • Error al utilizar notifyDataSetChanged en el adaptador de matriz de Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.