Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android


 
Herramientas
  #1  
Viejo 21/02/13, 20:09:46
Avatar de antmon12
antmon12 antmon12 no está en línea
Usuario novato en la web
Mensajes: 29
 
Fecha de registro: ene 2013
Mensajes: 29
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
No recargar WebView al rotar dispositivo

Tengo un WebView dentro de mi app Android en la que cargo una página web.
Hasta ahí todo va bien pero al rotar el dispositivo éste se vuelve a cargar en lugar de recolocarse que es el comportamiento que quiero que tenga.
Alguna idea?? más que nada es porque es bastante molesto para un usuario que se cargue la página cada vez que rota el dispositivo.
Gracias por adelantado!
Responder Con Cita


  #2  
Viejo 21/02/13, 21:40:35
Avatar de ugarte
ugarte ugarte no está en línea
Miembro del foro
Mensajes: 66
 
Fecha de registro: abr 2012
Mensajes: 66
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
El problema es que cuando giras el terminal la aplicación vuelve a pasar por onCreate(), onStart() y onResume(). Evita que pase por ahí cuando gires el terminal.
Imagino que cargas el webView en el onCreate(). Puedes ponerle que solo te lo haga la primera vez, por ejemplo. Es una chapucilla pero lo primero que se me ocurre.
Responder Con Cita
  #3  
Viejo 21/02/13, 22:02:33
Avatar de Arasthel
Arasthel Arasthel no está en línea
Cocinero veterano
Mensajes: 1,946
Compra y venta: (1)
 
Fecha de registro: jun 2009
Localización: Almería
Mensajes: 1,946
Modelo de smartphone: Nexus 5
Versión de ROM: DroidKang
Tu operador: Amena
Mencionado: 393 comentarios
Tagged: 1 hilos
Si pones esto dentro del acitivty en cuestión en el AndroidManifest.xml debería de evitar que se destruya y vuelva a crear la actividad al girar la pantalla:

Código:
android:configChanges="keyboardHidden|orientation|screenSize"
Un saludo.
Responder Con Cita
  #4  
Viejo 21/02/13, 22:09:06
Avatar de antmon12
antmon12 antmon12 no está en línea
Usuario novato en la web
Mensajes: 29
 
Fecha de registro: ene 2013
Mensajes: 29
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Probaré la xapucilla esa que dices ugarte.
Lo que dices tú, arasthel, lo he probado ya y no me funciona.
Responder Con Cita
  #5  
Viejo 21/02/13, 23:34:07
Avatar de ugarte
ugarte ugarte no está en línea
Miembro del foro
Mensajes: 66
 
Fecha de registro: abr 2012
Mensajes: 66
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Cita:
Originalmente Escrito por antmon12 Ver Mensaje
Probaré la xapucilla esa que dices ugarte.
Lo que dices tú, arasthel, lo he probado ya y no me funciona.
a mi lo que dice @Arasthel si que me funciona.

Código:
 
<application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:name="com.example.nuevointento.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
lo tienes que meter ahí
Responder Con Cita
  #6  
Viejo 22/02/13, 18:45:43
Avatar de antmon12
antmon12 antmon12 no está en línea
Usuario novato en la web
Mensajes: 29
 
Fecha de registro: ene 2013
Mensajes: 29
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Pasa que lo que dice arasthel me marca un error por lo tanto no vale.
Alguna otra solución?
Responder Con Cita
  #7  
Viejo 22/02/13, 18:59:41
Avatar de Arasthel
Arasthel Arasthel no está en línea
Cocinero veterano
Mensajes: 1,946
Compra y venta: (1)
 
Fecha de registro: jun 2009
Localización: Almería
Mensajes: 1,946
Modelo de smartphone: Nexus 5
Versión de ROM: DroidKang
Tu operador: Amena
Mencionado: 393 comentarios
Tagged: 1 hilos
Pues no debería marcártelo. Si estás en una versión anterior a 3.0 igual el "screenSize" no tendria que estar ahí, pero por lo demás...
Responder Con Cita
  #8  
Viejo 22/02/13, 19:18:59
Avatar de antmon12
antmon12 antmon12 no está en línea
Usuario novato en la web
Mensajes: 29
 
Fecha de registro: ene 2013
Mensajes: 29
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Podría ser el problema.
Estoy programando para la versión 2.2, aún así, no se os ocurre nada?
Responder Con Cita
  #9  
Viejo 22/02/13, 19:24:56
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
Lo que dice arasthel funciona, pero si estás programando para 2.2 como objetivo quita el screenSize.
Responder Con Cita
  #10  
Viejo 23/02/13, 17:16:41
Avatar de ugarte
ugarte ugarte no está en línea
Miembro del foro
Mensajes: 66
 
Fecha de registro: abr 2012
Mensajes: 66
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Pues he probado el método en una aplicación que hice hace un tiempo y cuando giro la activadad no se me recarga, hasta ahí bien, el problema es que tengo un XML para la posición portrait (vertical) y otro para la landscape (horizontal).
Pues al girar me muestra la portrait y no la landscape.
Responder Con Cita
  #11  
Viejo 23/02/13, 18:25:38
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
Cita:
Originalmente Escrito por ugarte Ver Mensaje
Pues he probado el método en una aplicación que hice hace un tiempo y cuando giro la activadad no se me recarga, hasta ahí bien, el problema es que tengo un XML para la posición portrait (vertical) y otro para la landscape (horizontal).
Pues al girar me muestra la portrait y no la landscape.
Si usas el android:configChanges tu Activity no volverá a recargarse, por lo tanto no volverá a ejecutar su setContentView, y por tanto no te cambiará al otro Layout.

Por el contrario, si no lo usas, tu Activity se volverá a recargar, cambiará de Layout al que le corresponda, pero obviamente se tendrán que reiniciar todos los controles y por tanto tu WebView.

Existe una forma para que aún recargando puedas recuperar Views (aunque supongo que no Fragments, a ver si lo pruebo algún día, pero eso es otra historia):

protected void onSaveInstanceState(Bundle state) {
web.saveState(state);
}

Y tu onCreate quedaría así:

public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tulayout);
if (savedInstanceState != null)
((WebView)findViewById(R.id.web)).restoreState(sav edInstanceState);
/*AQUI TODO LO QUE HAGAS*
}
Responder Con Cita
  #12  
Viejo 24/02/13, 21:29:17
Avatar de antmon12
antmon12 antmon12 no está en línea
Usuario novato en la web
Mensajes: 29
 
Fecha de registro: ene 2013
Mensajes: 29
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
He puesto un mensaje Log en el onCreate para ver si al rotar volvía a pasar por ahí e incluso con lo que decís del manifiesto sigue recargándose. =S
Responder Con Cita
  #13  
Viejo 26/02/13, 17:15:19
Avatar de antmon12
antmon12 antmon12 no está en línea
Usuario novato en la web
Mensajes: 29
 
Fecha de registro: ene 2013
Mensajes: 29
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
No consigo hacerlo funcionar.
Alguien puede subir un ejemplo completo??
Gracias!
Responder Con Cita
  #14  
Viejo 27/02/13, 00:29:47
Avatar de ugarte
ugarte ugarte no está en línea
Miembro del foro
Mensajes: 66
 
Fecha de registro: abr 2012
Mensajes: 66
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Al final creo que no solucionamos el problema que tenía el creador del tema, y ahora a mi por probar en un proyecto que tenía abandonado tampoco consigo el resultado que quiero.
He encontrado estos dos artículos en castellano, no los he mirado todavía pero cuando tenga un rato lo pruebo. Por si queréis ir mirando algo:
http://androideity.com/2011/10/06/ma...la-en-android
http://danielme.com/2012/09/17/rotac...la-en-android

Edito, mi proyecto no es con webview, ni los articulos que he puesto pero seguro que os puede ayudar
Responder Con Cita
  #15  
Viejo 27/02/13, 16:21:12
Avatar de antmon12
antmon12 antmon12 no está en línea
Usuario novato en la web
Mensajes: 29
 
Fecha de registro: ene 2013
Mensajes: 29
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Según he podido comprobar con las dos páginas que indicaste todo lo nombrado anteriormente para que sea el SO quién controle el cambio de orientación poniendo en el manifiesto android:configChanges="keyboardHidden|orientation" te mantiene por ejemplo los datos introducidos en un editText pero con el webView la página vuelve a cargarse por lo cual esa no es la solución, no obstante pienso que se debe de poder solucionar ese problema.
Vamos pensemos, no puede ser tan difícil!!
Responder Con Cita
  #16  
Viejo 28/02/13, 20:26:21
Avatar de antmon12
antmon12 antmon12 no está en línea
Usuario novato en la web
Mensajes: 29
 
Fecha de registro: ene 2013
Mensajes: 29
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Nada?? jajajaja
Responder Con Cita
  #17  
Viejo 01/03/13, 10:30:11
Avatar de striker6969
striker6969 striker6969 no está en línea
Desarrollador
Mensajes: 630
Compra y venta: (2)
 
Fecha de registro: feb 2011
Localización: San Fernando de Henares
Mensajes: 630
Modelo de smartphone: LG G3
Tu operador: Vodafone
Mencionado: 2 comentarios
Tagged: 0 hilos
Yo lo he solucionado de otra forma, seguramente no es la mejor forma pero no conozco otra que funcione correctamente.

Primero:
- Sobreescribiendo el método onRetainNonConfigurationInstance devolvemos la información que quieres conservar.
- Devuelves la información que quieras guardar

@Override
public Object onRetainNonConfigurationInstance(){

//Almacenamos la lista de jugadas
return this.jugadas;

}

Segundo:
- En el onCreate de la activity

Object restore = getLastNonConfigurationInstance();

if (restore != null){

//La interfaz se ha reiniciado por que se ha girado el dispositivo

}else{

//La primera vez que entramos en la activity

}

Espero haber sido de ayuda.

Saludos.
Responder Con Cita
  #18  
Viejo 01/03/13, 12:15:48
Avatar de antmon12
antmon12 antmon12 no está en línea
Usuario novato en la web
Mensajes: 29
 
Fecha de registro: ene 2013
Mensajes: 29
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Lo que dices funciona para mantener texto en un editText por ejemplo pero no para que al rotar el dispositivo simplemente se reorganice el webview en lugar de recargarse.
Responder Con Cita
Respuesta

Estás aquí
Regresar   HTCMania > Todo sobre Android > Programación y Desarrollo para Android


Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 16:37:14 (GMT +1)

Cookies settings
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007