Webview bei Gerätdrehung

  • Antworten:26
  • Bentwortet
Angeal
  • Forum-Beiträge: 176

09.05.2010, 19:16:14 via Website

Hallo zusammen,
ich schreibe zur Zeit an einer Webview App. Folgendes Problem besteht jedoch:
Sobald ich das Gerät drehe (G1) oder die Hardware Tastatur ausfahre springt das Script immer wieder zurück auf Anfang. Heißt, es zeigt die html Seite an welche es ganz zu beginn geladen hat.

Wir fällt dazu aktuell keine Lösung ein.

Besteht wahlweise die Möglichkeit die App immer Vertikal anzeigen zu lassen. Heißt also egal ob Drehung oder Hardwaretastatur: die Anzeige nicht mitdrehen lassen.

Antworten
Gelöschter Account
  • Forum-Beiträge: 104

09.05.2010, 19:24:33 via Website

versuche mal im AndroidManifest.xml folgendes einzufügen:

1android:configChanges="keyboardHidden|orientation"


vorher:

1<activity android:name=".MyActivity">


nachher:

1<activity android:name=".MyActivity" android:configChanges="keyboardHidden|orientation">

— geändert am 09.05.2010, 19:27:19

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

09.05.2010, 19:32:18 via Website

Daniel J.
Hallo zusammen,
ich schreibe zur Zeit an einer Webview App. Folgendes Problem besteht jedoch:
Sobald ich das Gerät drehe (G1) oder die Hardware Tastatur ausfahre springt das Script immer wieder zurück auf Anfang. Heißt, es zeigt die html Seite an welche es ganz zu beginn geladen hat.

Wir fällt dazu aktuell keine Lösung ein.

Besteht wahlweise die Möglichkeit die App immer Vertikal anzeigen zu lassen. Heißt also egal ob Drehung oder Hardwaretastatur: die Anzeige nicht mitdrehen lassen.

Ähnlich wie mein Vorredner schon erwähnte, hier vollständig der entsprechende Absatz aus der Android Beschreibung:
In some special cases, you may want to bypass restarting of your activity based on one or more types of configuration changes. This is done with the android:configChanges attribute in its manifest. For any types of configuration changes you say that you handle there, you will receive a call to your current activity's onConfigurationChanged(Configuration) method instead of being restarted. If a configuration change involves any that you do not handle, however, the activity will still be restarted and onConfigurationChanged(Configuration) will not be called.

Das bedeutet, wenn Du die onPause und onRestart, onResume Methoden entsprechend implementiert und befüllt hast, dann verhält sich Deine App auch wie erwartet.

lg Voss

Antworten
Angeal
  • Forum-Beiträge: 176

09.05.2010, 19:34:31 via Website

Erhan Ekinci
versuche mal im AndroidManifest.xml folgendes einzufügen:

1android:configChanges="keyboardHidden|orientation"


vorher:

1<activity android:name=".MyActivity">


nachher:

1<activity android:name=".MyActivity" android:configChanges="keyboardHidden|orientation">

Danke :grin:
Das hat wunderbar funktioniert :-)

Antworten
Gelöschter Account
  • Forum-Beiträge: 460

09.05.2010, 20:15:09 via App

also muss man nur
1android:configChanges="keyboardHidden|orientation"
einfügen und das wars sonst nichts,da ich das selbe problem habe

Grüße Alexander

Antworten
Angeal
  • Forum-Beiträge: 176

09.05.2010, 20:44:12 via Website

Alexander Rock
also muss man nur
1android:configChanges="keyboardHidden|orientation"
einfügen und das wars sonst nichts,da ich das selbe problem habe

Genau...nur das dort einfügen und Problem erledigt ^^

Antworten
Angeal
  • Forum-Beiträge: 176

09.05.2010, 20:55:04 via Website

Noch eine kurze Frage.

Ist es Möglich eine Art "Popup" auf dem Display einzubinden auf dem steht "lädt" wenn man einen Link klickt und eine neue Seite lädt?

lg und danke :-)

— geändert am 09.05.2010, 21:29:45

Antworten
Gelöschter Account
  • Forum-Beiträge: 104

09.05.2010, 22:42:45 via App

@Daniel: ProcessDialog, dürfte aber nicht so einfach gehen wie du dir das jetzt vorstellen magst ;-)

— geändert am 09.05.2010, 22:44:49

Antworten
Angeal
  • Forum-Beiträge: 176

09.05.2010, 22:50:17 via Website

Erhan Ekinci
@Daniel: ProcessDialog, dürfte aber nicht so einfach gehen wie du dir das jetzt vorstellen magst ;-)

Hab es ja schon ein wenig über ProcessDialog gelöst. Allerdings scheint es nur bei starten deer App anzuschlagen. Nicht jedoch beim klicken eines Links.

Antworten
Gelöschter Account
  • Forum-Beiträge: 104

09.05.2010, 22:53:56 via App

dann hast du den processdialog auch nur beim aufruf des programms eingebaut?

Antworten
Gelöschter Account
  • Forum-Beiträge: 460

09.05.2010, 23:10:30 via App

Daniel J.
Alexander Rock
also muss man nur
1android:configChanges="keyboardHidden|orientation"
einfügen und das wars sonst nichts,da ich das selbe problem habe

Genau...nur das dort einfügen und Problem erledigt ^^

gleich mal testen thx

Grüße Alexander

Antworten
Angeal
  • Forum-Beiträge: 176

09.05.2010, 23:21:56 via Website

Hast recht xD

Das war der Fehler ^^

Antworten
Gelöschter Account
  • Forum-Beiträge: 460

09.05.2010, 23:47:00 via App

klappt bei mir irgendwie nicht app lädt website beim drehen komplett neu...
(ruft im quellcode festgelegte startseite auf)

Grüße Alexander

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

10.05.2010, 00:55:03 via Website

Du hast das evtl. nicht richtig im Manifest eingebaut? Zeigt doch mal Deine Manifest.xml. Das funktioniert nämlich einwandfrei.

lg Voss

Antworten
Angeal
  • Forum-Beiträge: 176

10.05.2010, 08:27:24 via Website

Alexander Rock
klappt bei mir irgendwie nicht app lädt website beim drehen komplett neu...
(ruft im quellcode festgelegte startseite auf)

du hast aber hier den Platzhalter MyActivity durch den Namen deiner Activity ersetzt,oder? ;)

Antworten
Gelöschter Account
  • Forum-Beiträge: 460

10.05.2010, 09:29:15 via App

Ich habe meine AndroidManifest.xml genau das eingegeben mehr musste ja nicht verändrert werden oder

Grüße Alexander

Antworten
Angeal
  • Forum-Beiträge: 176

10.05.2010, 10:04:45 via Website

Wie mein Vorposter schon schrieb....poste doch mal deine Manifest.xml

Antworten
Gelöschter Account
  • Forum-Beiträge: 460

10.05.2010, 11:17:16 via App

ja werde ich machen,sobald ich aus der Schule komme,da ich sie momentan nicht vorliegen habe

Grüße Alexander

Antworten
Gelöschter Account
  • Forum-Beiträge: 460

10.05.2010, 13:30:38 via Website

Hier mal meine AndroidManifest.xml:

1<?xml version="1.0" encoding="utf-8"?>
2<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3 package="de.web.eTCG"
4 android:versionCode="1"
5 android:versionName="0.1">
6 <application android:icon="@drawable/icon" android:label="@string/app_name">
7 <activity android:name=".WebView"
8 android:label="@string/app_name"
9 android:configChanges="keyboardHidden|orientation">
10 <intent-filter>
11 <action android:name="android.intent.action.MAIN" />
12 <category android:name="android.intent.category.LAUNCHER" />
13 </intent-filter>
14 </activity>
15 </application>
16 <uses-sdk android:minSdkVersion="3"/>
17<uses-permission android:name="android.permission.INTERNET" />
18</manifest>

nun klappt es ich hatte es zuvor in eine neue <activity></activity> eingefügt,anstatt in die vorhandene^^

— geändert am 10.05.2010, 14:01:09

Grüße Alexander

Antworten
Angeal
  • Forum-Beiträge: 176

10.05.2010, 14:17:50 via Website

Wollt grad sagen ^^ Eben sah der Code etwas komisch aus xD

Antworten
Gelöschter Account
  • Forum-Beiträge: 460

10.05.2010, 14:23:36 via Website

Wie kann man denn hinbekommen,dass man einen Ladebalken oder so angezeigt bekommt, da es irgendwie dumm ist nicht zu wissen wird geladen oder was is los...

Kann man der "Zurück" Taste beibringen nur eine Seite zurück zu gehen und nicht gleich die App zu schliessen?

Wie schafftt man es unter "MENÜ" einen Button zu machen der "Beenden" heisst und die App schliesst?

Grüße Alexander

Antworten
Angeal
  • Forum-Beiträge: 176

10.05.2010, 14:39:11 via Website

Das mit dem Ladebalken geht über ProgressBar

Die zurück Taste kannst du mit folgendem Code innerhalb deiner Webview Activity so umwandeln, dass er die App nicht beendet sondern einfach nur zurückspringt

1@Override
2public boolean onKeyDown(int keyCode, KeyEvent event) {
3 if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) {
4 webview.goBack();
5 return true;
6 }
7 return super.onKeyDown(keyCode, event);
8}

Und das mit den Menü Buttons kann man auf verschiedene Wege lösen. Entweder über eine xml oder direkt in der Activity. Ich bevorzuge eher die xml Variante.

Antworten
Gelöschter Account
  • Forum-Beiträge: 460

10.05.2010, 14:43:52 via Website

Muss ich also

1@Override
2public boolean onKeyDown(int keyCode, KeyEvent event) {
3 if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) {
4 webview.goBack();
5 return true;
6 }
7 return super.onKeyDown(keyCode, event);
8}

in die WebView.java einfügen, die unter scr... liegt?

die sieht bei mir so aus:

1package de.web.eTCG;
2
3import de.web.eTCG.R;
4import android.webkit.*;
5import android.app.Activity;
6import android.os.Bundle;
7
8public class WebView extends Activity {
9 /** Called when the activity is first created. */
10 @Override
11 public void onCreate(Bundle savedInstanceState) {
12 super.onCreate(savedInstanceState);
13 setContentView(R.layout.main);
14
15 android.webkit.WebView view = (android.webkit.WebView) this.findViewById(R.id.View);
16
17 view.getSettings().setJavaScriptEnabled(true);
18 view.setWebViewClient(new InsideWebViewClient());
19 view.getSettings().setJavaScriptEnabled(true) ;
20 view.loadUrl("http://www.etcg.de/");
21 }
22 private class InsideWebViewClient extends WebViewClient {
23 @Override
24 public boolean shouldOverrideUrlLoading(android.webkit.WebView view, String url)
25 {
26
27 view.loadUrl(url);
28 return true;
29 }
30
31 }
32
33}

und wenn ja wo dort?
Sry wenns tiotale Anfängerfragen sind aber ich schreibe noch nicht so lange Java

@Daniel

Hast du ICQ,MSN oder SKYPE dann könntest du mir wahrscheinlich schneller und besser helfen

— geändert am 10.05.2010, 14:48:40

Grüße Alexander

Antworten
Angeal
  • Forum-Beiträge: 176

10.05.2010, 14:59:38 via Website

Versuch mal den kompletten Code an Zeile 26 zu platzieren.
Hab jetzt nicht genau drübergeschaut aber dort sollte es hinpassen ^^

Antworten
Gelöschter Account
  • Forum-Beiträge: 460

10.05.2010, 15:11:47 via Website

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

10.05.2010, 15:39:38 via Website

Hier sollte Webview als final übergeben werden so kann die JVM das intern über ein accessor Object erreichen!

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
Angeal
  • Forum-Beiträge: 176

10.05.2010, 15:42:06 via Website

Oh da hab ich mich wohl in der Zeile grad verhauen ^^

ICQ Nr hab ich dir gemailt...

Antworten