|
||
|
|
|
|||||||
| 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
|
||||
|
||||
|
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! |
|
|
|
#2
|
||||
|
||||
|
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. |
|
#3
|
||||
|
||||
|
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" |
|
#4
|
||||
|
||||
|
Probaré la xapucilla esa que dices ugarte.
Lo que dices tú, arasthel, lo he probado ya y no me funciona. |
|
#5
|
||||
|
||||
|
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>
|
|
#6
|
||||
|
||||
|
Pasa que lo que dice arasthel me marca un error por lo tanto no vale.
Alguna otra solución? |
|
#8
|
||||
|
||||
|
Podría ser el problema.
Estoy programando para la versión 2.2, aún así, no se os ocurre nada? |
|
#10
|
||||
|
||||
|
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. |
|
#11
|
||||
|
||||
|
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. ![]() 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* } |
|
#12
|
||||
|
||||
|
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
|
|
#13
|
||||
|
||||
|
No consigo hacerlo funcionar.
Alguien puede subir un ejemplo completo?? Gracias!
|
|
#14
|
||||
|
||||
|
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 |
|
#15
|
||||
|
||||
|
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!! |
|
#16
|
||||
|
||||
|
Nada?? jajajaja
|
|
#17
|
||||
|
||||
|
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. |
|
#18
|
||||
|
||||
|
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.
|
![]() |
Estás aquí
|
||||||
|
||||||