logo
Bienvenido visitante. Para activar todas las funcionalidades, por favor Iniciar sesión o Registrarse.

Aviso

Icon
Error

Opciones
Ir a la última publicación
Lelouch  
#1 Publicado : martes, 14 de enero de 2014 22:06:32(UTC)
Lelouch

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
cacevedomedel  
#2 Publicado : miércoles, 15 de enero de 2014 14:24:45(UTC)
cacevedomedel

Posición: Member

Grupos: Registered
Registrado: 03/10/2013(UTC)
Mensajes: 13
Hombre
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.
Lelouch  
#3 Publicado : miércoles, 15 de enero de 2014 20:42:55(UTC)
Lelouch

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.


admin  
#4 Publicado : jueves, 16 de enero de 2014 23:23:13(UTC)
admin

Posición: Administration

Grupos: Administrators
Registrado: 07/10/2010(UTC)
Mensajes: 436
Hombre
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!!
Un saludo,

Curso Completo GRATIS paso a paso de como programar Android
http://www.aprendeandroid.com
Lelouch  
#5 Publicado : viernes, 17 de enero de 2014 18:08:20(UTC)
Lelouch

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
thanks 1 usuario agradecido Lelouch por esta útil publicación.
admin en 17/01/2014(UTC)
admin  
#6 Publicado : viernes, 17 de enero de 2014 22:51:38(UTC)
admin

Posición: Administration

Grupos: Administrators
Registrado: 07/10/2010(UTC)
Mensajes: 436
Hombre
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

Un saludo,

Curso Completo GRATIS paso a paso de como programar Android
http://www.aprendeandroid.com
Lelouch  
#7 Publicado : domingo, 19 de enero de 2014 3:43:25(UTC)
Lelouch

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.

Usuarios navegando este tema
Guest
Similar Topics
Problema con variables globales (Android Foro)
por Lelouch 14/01/2014 22:06:32(UTC)
Problema con variables globales (Android Foro)
por km112 04/06/2013 12:31:21(UTC)
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.