Posición: Newbie
Grupos: Registered
Registrado: 14/01/2014(UTC) Mensajes: 4 Ubicación: Peru
Fue agradecido: 1 vez/veces in 1 publicación(es).
|
Bueno, estuve intentando modificar el programa Hola Usuario para que el TextView cambie su texto por el que introduzca en el EditText. Hice la aplicacion desde el inicio pero me daba un error al momento de correrla: La aplicacion CambioTexto (proceso com.example.cambiotexto) se ha detenido de forma imprevista. Despues de revisar (y modificar) el codigo varias veces me di cuenta que el error ocurre cuando declaro las variables globales con final final TextView Texto = (TextView) findViewById(R.id.LblCambio); pero si las uso dentro del OnClick funciona bien y no me da errores. Código:
package com.example.cambiotexto;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends Activity {
//final TextView Texto = (TextView) findViewById(R.id.LblCambio);
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void btn_cambio(View v){
TextView Texto = (TextView) findViewById(R.id.LblCambio);
EditText Editado = (EditText) findViewById(R.id.TxtCambio);
Texto.setText(Editado.getText().toString());
}
}
Quisiera saber si estoy declarando mal las variables globales o es otra la razon por la que me da error al usarla Gracias
|
|
|
|
Posición: Member
Grupos: Registered
Registrado: 03/10/2013(UTC) Mensajes: 13 Ubicación: Chile Agradecimientos: 1 veces Fue agradecido: 3 vez/veces in 3 publicación(es).
|
Estimado prueba con esto: Citar: package com.example.cambiotexto;
import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.EditText; import android.widget.TextView;
public class MainActivity extends Activity { private TextView Texto; private EditText Editado: //Elije public o private segun su aplicacion
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Texto = (TextView) findViewById(R.id.LblCambio); } public void btn_cambio(View v){ Editado = (EditText) findViewById(R.id.TxtCambio); Texto.setText(Editado.getText().toString()); } }
prueba con esto y dime si funciona.
|
|
|
|
Posición: Newbie
Grupos: Registered
Registrado: 14/01/2014(UTC) Mensajes: 4 Ubicación: Peru
Fue agradecido: 1 vez/veces in 1 publicación(es).
|
Hola, el programa funciona :) Mi duda era sobre la declaracion de variables ya que al final del capitulo http://www.aprendeandroid.com/l4/interface3.htm señala las variables globales con final TextView mitexto = (TextView) findViewById(R.id.texto) El Private TextView Texto si hace que la variable sea global (se pone azul) Supongo que el problema ocurre cuando se pone todo junto.
|
|
|
|
Posición: Administration
Grupos: Administrators
Registrado: 07/10/2010(UTC) Mensajes: 436 Ubicación: España Agradecimientos: 38 veces Fue agradecido: 49 vez/veces in 48 publicación(es).
|
Hola! Segun veo hay algo mal en el codigo.... vuelves a definir la variable dentro del boton, quizas ese sea el problema, prueba asi: Código:
package com.example.cambiotexto;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends Activity {
final TextView texto = (TextView) findViewById(R.id.LblCambio);
final EditText editado = (EditText) findViewById(R.id.TxtCambio);
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void btn_cambio(View v){
//TextView texto = (TextView) findViewById(R.id.LblCambio);
//EditText editado = (EditText) findViewById(R.id.TxtCambio);
texto.setText(editado.getText().toString());
}
}
ahhh otra cosa! intenta poner el nombre de las variables con minuscula, es una buena practica!! Cuentanos que tal te fue!! |
|
|
|
|
Posición: Newbie
Grupos: Registered
Registrado: 14/01/2014(UTC) Mensajes: 4 Ubicación: Peru
Fue agradecido: 1 vez/veces in 1 publicación(es).
|
Hola! Gracias por responder. Creo que no me explique bien. El codigo que colocas es el que me da errores. Cuando uso el findViewById fuera del boton ocurre el error. Tal vez no es problema de la activity asi que por si las dudas dejo el logcat. Código:
01-17 12:12:46.992: E/ActivityManager(169): exception bw.write()java.io.IOException: Transport endpoint is not connected
01-17 12:12:46.992: D/PowerManagerService(169): acquireWakeLock flags=0x1 tag=ActivityManager-Launch
01-17 12:12:47.052: I/ActivityManager(169): Start proc com.example.cambiotexto for activity com.example.cambiotexto/.MainActivity: pid=21008 uid=10086 gids={1015}
01-17 12:12:47.152: E/Sensors(169): GsSensor: line +83 ~~~handle===0~~en==1~~!n
01-17 12:12:47.162: E/Sensors(169): GsSensor::setDelay: line +113 ~~~handle===0~~ns==1282520~~!n
01-17 12:12:47.162: E/Sensors(169): GsSensor::setDelay: line +113 ~~~handle===0~~ns==-2133798881~~!n
01-17 12:12:47.292: W/dalvikvm(21008): threadid=1: thread exiting with uncaught exception (group=0x400db560)
01-17 12:12:47.302: E/AndroidRuntime(21008): FATAL EXCEPTION: main
01-17 12:12:47.302: E/AndroidRuntime(21008): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.cambiotexto/com.example.cambiotexto.MainActivity}: java.lang.NullPointerException
01-17 12:12:47.302: E/AndroidRuntime(21008): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1569)
01-17 12:12:47.302: E/AndroidRuntime(21008): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
01-17 12:12:47.302: E/AndroidRuntime(21008): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
01-17 12:12:47.302: E/AndroidRuntime(21008): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
01-17 12:12:47.302: E/AndroidRuntime(21008): at android.os.Handler.dispatchMessage(Handler.java:99)
01-17 12:12:47.302: E/AndroidRuntime(21008): at android.os.Looper.loop(Looper.java:130)
01-17 12:12:47.302: E/AndroidRuntime(21008): at android.app.ActivityThread.main(ActivityThread.java:3683)
01-17 12:12:47.302: E/AndroidRuntime(21008): at java.lang.reflect.Method.invokeNative(Native Method)
01-17 12:12:47.302: E/AndroidRuntime(21008): at java.lang.reflect.Method.invoke(Method.java:507)
01-17 12:12:47.302: E/AndroidRuntime(21008): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:878)
01-17 12:12:47.302: E/AndroidRuntime(21008): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:636)
01-17 12:12:47.302: E/AndroidRuntime(21008): at dalvik.system.NativeStart.main(Native Method)
01-17 12:12:47.302: E/AndroidRuntime(21008): Caused by: java.lang.NullPointerException
01-17 12:12:47.302: E/AndroidRuntime(21008): at android.app.Activity.findViewById(Activity.java:1650)
01-17 12:12:47.302: E/AndroidRuntime(21008): at com.example.cambiotexto.MainActivity.<init>(MainActivity.java:12)
01-17 12:12:47.302: E/AndroidRuntime(21008): at java.lang.Class.newInstanceImpl(Native Method)
01-17 12:12:47.302: E/AndroidRuntime(21008): at java.lang.Class.newInstance(Class.java:1409)
01-17 12:12:47.302: E/AndroidRuntime(21008): at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
01-17 12:12:47.302: E/AndroidRuntime(21008): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1561)
01-17 12:12:47.302: E/AndroidRuntime(21008): ... 11 more
01-17 12:12:47.302: W/ActivityManager(169): Force finishing activity com.example.cambiotexto/.MainActivity
01-17 12:12:47.312: E/ActivityManager(169): exception bw.write()java.io.IOException: Transport endpoint is not connected
Las letras son rojas desde Fatal Exception: Main
|
1 usuario agradecido Lelouch por esta útil publicación.
|
|
|
Posición: Administration
Grupos: Administrators
Registrado: 07/10/2010(UTC) Mensajes: 436 Ubicación: España Agradecimientos: 38 veces Fue agradecido: 49 vez/veces in 48 publicación(es).
|
Hola!! Ahora si que te he entendido!! efectivamente el ejemplo de esa leccion no esta del todo bien! :s lo correcto seria definir la variable GLOBAL, y luego en el inicio de la activity localizar el boton y asignarlo a esa variable, para ya usarla en cualquier punto de nuestro probrama!! Muchas gracias por el aporte!! dejo aqui como quedaria el ejemplo correctamente: Código:
package es.epinanab.holamundo2;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
public class MainActivity extends Activity {
/** Called when the activity is first created. */
//Definimos las variables Globales
TextView texto;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// inicio del Codigo de nuestro programa, localizamos el boton y lo asignamos a la variable
texto = (TextView) findViewById(R.id.texto);
// Fin del codigo de nuestro programa
}
// Inicio del Metodo que hemos definido en el Boton
public void Cambia_Texto(View v) {
// Ponemos el texto que queremos en el elemento TextView
texto.setText("Eres una Maquina!!");
// Fin de nuestro metodo Cambia_Texto
}
// Fin Activity
}
Editado por un usuario viernes, 17 de enero de 2014 22:52:33(UTC)
| Razón: No especificada |
|
|
|
|
Posición: Newbie
Grupos: Registered
Registrado: 14/01/2014(UTC) Mensajes: 4 Ubicación: Peru
Fue agradecido: 1 vez/veces in 1 publicación(es).
|
Gracias por la aclaracion :) Creo que este no es el lugar correcto para la pregunta (deberia estar en la parte de java). Seria bueno que lo cambies, por si hay alguien que tiene la misma duda.
|
|
|
|
Salto de foro
No puedes iniciar nuevos temas en este foro.
No puedes responder a temas en este foro.
No puedes eliminar sus temas en este foro.
No puedes editar sus temas en este foro.
No puedes crear encuestas en este foro.
No puedes votar las encuestas en este foro.