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

Respuesta
 
Herramientas
  #1  
Viejo 21/02/13, 20:09:46
Array

[xs_avatar]
antmon12 antmon12 no está en línea
Usuario novato en la web
 
Fecha de registro: ene 2013
Mensajes: 29
Tu operador: Movistar

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
Array

[xs_avatar]
ugarte ugarte no está en línea
Miembro del foro
 
Fecha de registro: abr 2012
Mensajes: 66
Tu operador: Movistar

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
Array

[xs_avatar]
Arasthel Arasthel no está en línea
Cocinero veterano
· Votos compra/venta: (1)
 
Fecha de registro: jun 2009
Localización: Almería
Mensajes: 1,946
Modelo de smartphone: Nexus 5
Tu operador: Amena
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
Array

[xs_avatar]
antmon12 antmon12 no está en línea
Usuario novato en la web
 
Fecha de registro: ene 2013
Mensajes: 29
Tu operador: Movistar

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
Array

[xs_avatar]
ugarte ugarte no está en línea
Miembro del foro
 
Fecha de registro: abr 2012
Mensajes: 66
Tu operador: Movistar

 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
Array

[xs_avatar]
antmon12 antmon12 no está en línea
Usuario novato en la web
 
Fecha de registro: ene 2013
Mensajes: 29
Tu operador: Movistar

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
Array

[xs_avatar]
Arasthel Arasthel no está en línea
Cocinero veterano
· Votos compra/venta: (1)
 
Fecha de registro: jun 2009
Localización: Almería
Mensajes: 1,946
Modelo de smartphone: Nexus 5
Tu operador: Amena
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
Array

[xs_avatar]
antmon12 antmon12 no está en línea
Usuario novato en la web
 
Fecha de registro: ene 2013
Mensajes: 29
Tu operador: Movistar

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
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
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
Array

[xs_avatar]
ugarte ugarte no está en línea
Miembro del foro
 
Fecha de registro: abr 2012
Mensajes: 66
Tu operador: Movistar

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
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
 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
Array

[xs_avatar]
antmon12 antmon12 no está en línea
Usuario novato en la web
 
Fecha de registro: ene 2013
Mensajes: 29
Tu operador: Movistar

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
Array

[xs_avatar]
antmon12 antmon12 no está en línea
Usuario novato en la web
 
Fecha de registro: ene 2013
Mensajes: 29
Tu operador: Movistar

No consigo hacerlo funcionar.
Alguien puede subir un ejemplo completo??
Gracias!
Responder Con Cita
  #14  
Viejo 27/02/13, 00:29:47
Array

[xs_avatar]
ugarte ugarte no está en línea
Miembro del foro
 
Fecha de registro: abr 2012
Mensajes: 66
Tu operador: Movistar

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
Array

[xs_avatar]
antmon12 antmon12 no está en línea
Usuario novato en la web
 
Fecha de registro: ene 2013
Mensajes: 29
Tu operador: Movistar

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
Array

[xs_avatar]
antmon12 antmon12 no está en línea
Usuario novato en la web
 
Fecha de registro: ene 2013
Mensajes: 29
Tu operador: Movistar

Nada?? jajajaja
Responder Con Cita
  #17  
Viejo 01/03/13, 10:30:11
Array

[xs_avatar]
striker6969 striker6969 no está en línea
Desarrollador
· Votos compra/venta: (2)
 
Fecha de registro: feb 2011
Localización: San Fernando de Henares
Mensajes: 630
Modelo de smartphone: LG G3
Tu operador: Vodafone
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.
__________________
Watch Face con el tiempo para Android Wear
Responder Con Cita
  #18  
Viejo 01/03/13, 12:15:48
Array

[xs_avatar]
antmon12 antmon12 no está en línea
Usuario novato en la web
 
Fecha de registro: ene 2013
Mensajes: 29
Tu operador: Movistar

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   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 20:23:39 (GMT +1)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /