Bongiovi
13/07/13, 12:40:06
Estoy empezando a programar en android y me encuentro realizando una app donde incluyo lo que voy aprendiendo.
El tema es que la app tiene dos activities, la segunda se lanza cuando se pulsa un boton de la primera. El LinearLayout de la segunda se compone de dos TextViews. El primero debe aparecer inmediatamente, al crearse la Activity, pero el segundo requiere un minuto porque el telefono realiza unos calculos y hasta que no pasan 60 segundos no muestra el TextView correspondiente.
El problema es que no se muestra el primer TextView desde el principio, si no que se queda la pantalla en negro durante 60 segundos y luego muestra ambos TextViews a la vez.
He probado de todo tanto en xml como directamente en Java. ¿Como soluciono esto?
Como véis, es una duda de principiante total, ya digo que estoy empezando ;)
Gracias y un saludo.
EDITO:
Otra dudita en la respuesta #7 ;-)
Reutilizo el post para no crear otro nuevo.
Estoy teniendo problemas utilizando la clase AsyncTask.
La app consiste en dos sencillas Activities, la primera lanza el Intent a la segunda sin problemas.
La segunda Activity tiene 2 TextViews, al principio solo se muestra uno, mientras que el segundo permanece oculto. Hasta aquí todo OK.
El segundo TextView debería mostrarse al concluir la AsyncTask, pero la aplicación da FC cuando esto pasa :(.
Aquí los códigos:
- Layout.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/MainLinearLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/CalculoMensaje"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/calculo_mensaje"
android:layout_weight="1"/>
<TextView
android:id="@+id/ResultadosMensaje"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:layout_weight="4"
android:visibility="invisible"/>
</LinearLayout>
- Java.
public class Calculo extends Activity
{
TextView view;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
view = (TextView) findViewById(R.id.ResultadosMensaje);
setContentView(R.layout.calculo_activity);
calculoAsincrono task = new calculoAsincrono();
task.execute();
}
public class calculoAsincrono extends AsyncTask<Void, Void, Double>
{
@Override
protected Double doInBackground(Void... params)
{
// Cálculos realizados durante 60 segundos.
return index;
}
@Override
protected void onPostExecute(Double index)
{
StringBuilder builder = new StringBuilder();
builder.append("Tu CPU ha realizado " + index + " operaciones en un minuto.");
view.setText(builder.toString());
view.setVisibility(TextView.VISIBLE);
}
}
}
Prefiero investigar y aprender por mí mismo antes que que me expliquen los errores, pero esto me trae de cabeza X-D
Alguna solución?
Saludos!
Solucionado, solo había que cambiar la línea "TextView view;" dentro del método "onCreate".
El tema es que la app tiene dos activities, la segunda se lanza cuando se pulsa un boton de la primera. El LinearLayout de la segunda se compone de dos TextViews. El primero debe aparecer inmediatamente, al crearse la Activity, pero el segundo requiere un minuto porque el telefono realiza unos calculos y hasta que no pasan 60 segundos no muestra el TextView correspondiente.
El problema es que no se muestra el primer TextView desde el principio, si no que se queda la pantalla en negro durante 60 segundos y luego muestra ambos TextViews a la vez.
He probado de todo tanto en xml como directamente en Java. ¿Como soluciono esto?
Como véis, es una duda de principiante total, ya digo que estoy empezando ;)
Gracias y un saludo.
EDITO:
Otra dudita en la respuesta #7 ;-)
Reutilizo el post para no crear otro nuevo.
Estoy teniendo problemas utilizando la clase AsyncTask.
La app consiste en dos sencillas Activities, la primera lanza el Intent a la segunda sin problemas.
La segunda Activity tiene 2 TextViews, al principio solo se muestra uno, mientras que el segundo permanece oculto. Hasta aquí todo OK.
El segundo TextView debería mostrarse al concluir la AsyncTask, pero la aplicación da FC cuando esto pasa :(.
Aquí los códigos:
- Layout.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/MainLinearLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/CalculoMensaje"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/calculo_mensaje"
android:layout_weight="1"/>
<TextView
android:id="@+id/ResultadosMensaje"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:layout_weight="4"
android:visibility="invisible"/>
</LinearLayout>
- Java.
public class Calculo extends Activity
{
TextView view;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
view = (TextView) findViewById(R.id.ResultadosMensaje);
setContentView(R.layout.calculo_activity);
calculoAsincrono task = new calculoAsincrono();
task.execute();
}
public class calculoAsincrono extends AsyncTask<Void, Void, Double>
{
@Override
protected Double doInBackground(Void... params)
{
// Cálculos realizados durante 60 segundos.
return index;
}
@Override
protected void onPostExecute(Double index)
{
StringBuilder builder = new StringBuilder();
builder.append("Tu CPU ha realizado " + index + " operaciones en un minuto.");
view.setText(builder.toString());
view.setVisibility(TextView.VISIBLE);
}
}
}
Prefiero investigar y aprender por mí mismo antes que que me expliquen los errores, pero esto me trae de cabeza X-D
Alguna solución?
Saludos!
Solucionado, solo había que cambiar la línea "TextView view;" dentro del método "onCreate".