Androide; Declarar edittext en el cuerpo de la clase (Fuera de cualquier método)
Tengo experiencia con lenguajes de programación, pero soy un poco nuevo para la programación de Android.
Tengo un programa con algunos campos que funcionan como etiquetas (textview), botones, y entrada de datos (edittext).
- ¿Cómo obtener un cuerpo de respuesta para la excepción de actualización?
- ¿Cómo puedo obtener la diferencia entre dos fechas en android ?, intentado todo y publicar
- Error de ejecución para la tarea ': app: transformClassesWithJarMergingForDebug
- Varios archivos dex definen landroid / support / annotation / AnimRes
- Vínculos con varios clics en TextView en Android
Siempre que los declaro al principio del programa de cualquier método (pero en la clase por supuesto), cuando comienzo mi aplicación se bloquea y la simulación da una "desafortunadamente, su programa ha parado" alerta.
Eclipse no da ningún error para la declaración e hice uso de la misma manera para definir variables regulares sin ningún problema. También da el mismo error cuando declaro un objeto mediaplayer en el cuerpo de la clase.
¿Alguien sabe por qué da error? Y hay otra manera de declarar objetos globales como edittext, viewtext, etc … Declararlos una y otra vez en los métodos suena raro para mí.
¡¡Gracias!!
public class TrainerActivity extends Actividad {
Button stopTimer = (Button)findViewById(R.id.StopTimer); Button startTimer = (Button)findViewById(R.id.StartTimer); EditText totalTime = (EditText)findViewById(R.id.TotalTime); EditText enterMin = (EditText)findViewById(R.id.EnterMin); EditText enterSec = (EditText)findViewById(R.id.EnterSec); private boolean breaker = false; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); startTimer.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub Button_StartTimer(); } }); stopTimer.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub Button_StopTimer(); } }); }
- ¿Cómo obtener el último valor de BehaviorSubject?
- SQLiteException no se captura
- Actividades cargando xml diseño dinámicamente en android
- Gradle: Cómo crear dos aplicaciones para cada sabor con diferentes carpetas de activos:
- ¿Cómo puedo ejecutar esta clase en el hilo de interfaz de usuario?
- Java.net.SocketException: sendto failed: EPIPE (Broken pipe) en Android
- Cómo mostrar una columna de dos columnas ListView en Android?
- Índices de eventos multitouch para Android
Sin ver el código de ejemplo de lo que estás tratando es imposible decir de manera definitiva (no hacemos la mente de lectura aquí). Pero déjame adivinar, ¿estás haciendo algo como esto? …
public class MyActivity extends Activity { TextView tv1; // This is fine. TextView tv2 = (TextView) findViewById(R.id.textview2); // Don't do this. @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); tv1 = (TextView) findViewById(R.id.textview1); // This is fine tv1.setText("Some text"); // This works tv2.setText("Some text"); // NullPointerException here } }
El tv2.setText(...)
fallará porque utilizaste findViewById(...)
ANTES de llamar a setContenetView(...)
y como resultado, tv2
será null.
Es bastante aceptable declarar sus widgets como miembros de instancia en su Activity
pero no intente usar findViewById(...)
hasta findViewById(...)
DESPUÉS de haber configurado su vista de contenido.
¿Puede publicar un poco de código de ejemplo que ilustra el problema? Está bien para declarar una variable miembro que es un EditText o TextView en la clase.
logcat (en DDMS) debe ser darle algo de información sobre el error también. Si está utilizando eclipse hay una pestaña para DDMS, si no, sólo puede ejecutar DDMS desde una línea de comandos, mirar la pestaña logcat y lanzar su aplicación (con su teléfono conectado a través de usb, por supuesto.) Usted debería ser capaz de ver el error real que se informa.
Puede declarar estas variables dentro del cuerpo de la clase o dentro del cuerpo del método. En el primer caso, las variables son globales y por lo tanto se puede acceder dentro de toda la clase; en este último caso, son locales y por lo tanto sólo se puede acceder dentro de ese método. Ambos se pueden ver comúnmente en proramming.
En Android, la aplicación típica es que declare las variables en el cuerpo de la clase e instáncielas en el método onCreate (). Algo como esto:
public Class MyClass extends Activity{ TextView label;// so this variable can be accessed within any methods in this Class @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(Bundle savedInstanceState); setContentView(R.layout.main) // load the layout of the activity label=(TextView)findViewById(R.id.<the TextView id defined in the layout file>); //this variable get instantiated. From now on you can manipulate it anywhere inside the class. Button submit=(Button)findViewById(R.id.<the Button id defined in the layout file>);//you declared and instantiated it, but it could only be used within this method since you declared it here. } }
Si acaba de declarar una variable en el cuerpo de la clase, en la mayoría de los caeses, no puede usarla hasta que instancia, ya que son null
antes de la instancia. Creo que es por eso que tienes problemas. Por favor, publique el logcat para que podamos especificar el problema real.
intente declarar los nombres de los objetos del widget sólo fuera del método onCreate ()
Button stopTimer; Button startTimer; EditText totalTime; EditText enterMin; EditText enterSec;
luego inicializarlos después de setContentView () dentro onCreate ()
setContentView(R.layout.main); stopTimer = (Button)findViewById(R.id.StopTimer); startTimer = (Button)findViewById(R.id.StartTimer); totalTime = (EditText)findViewById(R.id.TotalTime); enterMin = (EditText)findViewById(R.id.EnterMin); enterSec = (EditText)findViewById(R.id.EnterSec);
- Triangulación Tutoriales para Android
- ¿Cómo haces Test Driven Development en Android Android proyecto?