Gelöschter Account
- Forum-Beiträge: 94
12.04.2012, 10:40:25 via Website
12.04.2012 10:40:25 via Website
Hallo zusammen, ich stehe vor einem kuriosen Problem:
Ich möchte einen WebView mit Inhalten aus dem asset-Folder füllen. In einer App von mir funktioniert das hervorragend. In einer anderen nicht. es wird nur eine weiße/leere Seite dargestellt. Die Inhalte wurden aber geladen, das stelle ich fest, wenn ich am WebView getTitle() oder getURL() aufrufe, beides liefert die korrekten Werte. Das gleiche Verhalten habe ich, wenn ich eine Website aus dem Netz laden will, bspw. http://google.de.
Hier mein Code, vielleicht findet ja jemand den Fehler:
Das Fragment:
Die Layout-XML:
AndroidManifest.xml
Langsam verzweifel ich dran...
Martin
Ich möchte einen WebView mit Inhalten aus dem asset-Folder füllen. In einer App von mir funktioniert das hervorragend. In einer anderen nicht. es wird nur eine weiße/leere Seite dargestellt. Die Inhalte wurden aber geladen, das stelle ich fest, wenn ich am WebView getTitle() oder getURL() aufrufe, beides liefert die korrekten Werte. Das gleiche Verhalten habe ich, wenn ich eine Website aus dem Netz laden will, bspw. http://google.de.
Hier mein Code, vielleicht findet ja jemand den Fehler:
Das Fragment:
1public class InfoFragment extends SherlockFragment {
2
3 public static final String VIEW_ABOUT = "about";
4 public static final String VIEW_INFO = "info";
5 private WebView webView;
6
7 @Override
8 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
9 View root = inflater.inflate(R.layout.fragment_info, null);
10
11 this.webView = (WebView) root.findViewById(R.id.info_webView);
12 this.webView.setVisibility(View.VISIBLE);
13
14 this.webView.getSettings().setJavaScriptEnabled(true);
15 this.webView.getSettings().setDefaultZoom(ZoomDensity.MEDIUM);
16
17 this.webView.setWebChromeClient(new WebChromeClient() {
18 @Override
19 public void onProgressChanged(WebView view, int prog) {
20 if (prog == 100) {
21 // liefert die richtigen Werte:
22 Log.d(Const.LOG_CAT, "finished loading URL " + InfoFragment.this.webView.getUrl());
23 Log.d(Const.LOG_CAT, "The page has the title " + InfoFragment.this.webView.getTitle());
24 }
25 }
26 });
27 this.webView.setWebViewClient(new WebViewClient() {
28
29 @Override
30 public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
31 Log.d(Const.LOG_CAT, "Fehler beim Laden der URL: " + failingUrl + " (" + errorCode + ", " + description + ")");
32 }
33 });
34
35 Bundle args = this.getArguments();
36 String screen = args.getString(Const.PARAMETER_URL);
37
38 if (StringUtil.isBlank(screen)) {
39 screen = VIEW_INFO;
40 }
41 if (screen.equals(VIEW_INFO)) {
42 this.loadInfo();
43 } else if (screen.equals(VIEW_ABOUT)) {
44 this.loadAbout();
45 }
46
47 return root;
48
49 }
50
51 private void loadInfo() {
52 Log.d(Const.LOG_CAT, "Loading info");
53 // this.webView.loadUrl("file:///android_asset/html/info/info.html");
54 this.webView.loadUrl("http://google.de");
55 }
56
57 private void loadAbout() {
58 Log.d(Const.LOG_CAT, "Loading about");
59 this.webView.loadUrl("file:///android_asset/html/about/ueber.html");
60 }
61
62}
2
3 public static final String VIEW_ABOUT = "about";
4 public static final String VIEW_INFO = "info";
5 private WebView webView;
6
7 @Override
8 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
9 View root = inflater.inflate(R.layout.fragment_info, null);
10
11 this.webView = (WebView) root.findViewById(R.id.info_webView);
12 this.webView.setVisibility(View.VISIBLE);
13
14 this.webView.getSettings().setJavaScriptEnabled(true);
15 this.webView.getSettings().setDefaultZoom(ZoomDensity.MEDIUM);
16
17 this.webView.setWebChromeClient(new WebChromeClient() {
18 @Override
19 public void onProgressChanged(WebView view, int prog) {
20 if (prog == 100) {
21 // liefert die richtigen Werte:
22 Log.d(Const.LOG_CAT, "finished loading URL " + InfoFragment.this.webView.getUrl());
23 Log.d(Const.LOG_CAT, "The page has the title " + InfoFragment.this.webView.getTitle());
24 }
25 }
26 });
27 this.webView.setWebViewClient(new WebViewClient() {
28
29 @Override
30 public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
31 Log.d(Const.LOG_CAT, "Fehler beim Laden der URL: " + failingUrl + " (" + errorCode + ", " + description + ")");
32 }
33 });
34
35 Bundle args = this.getArguments();
36 String screen = args.getString(Const.PARAMETER_URL);
37
38 if (StringUtil.isBlank(screen)) {
39 screen = VIEW_INFO;
40 }
41 if (screen.equals(VIEW_INFO)) {
42 this.loadInfo();
43 } else if (screen.equals(VIEW_ABOUT)) {
44 this.loadAbout();
45 }
46
47 return root;
48
49 }
50
51 private void loadInfo() {
52 Log.d(Const.LOG_CAT, "Loading info");
53 // this.webView.loadUrl("file:///android_asset/html/info/info.html");
54 this.webView.loadUrl("http://google.de");
55 }
56
57 private void loadAbout() {
58 Log.d(Const.LOG_CAT, "Loading about");
59 this.webView.loadUrl("file:///android_asset/html/about/ueber.html");
60 }
61
62}
Die Layout-XML:
1<?xml version="1.0" encoding="utf-8"?>
2<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 android:layout_width="match_parent"
4 android:layout_height="match_parent"
5 android:orientation="vertical" >
6 <WebView
7 android:id="@+id/info_webView"
8 android:layout_width="match_parent"
9 android:layout_height="match_parent" />
10
11</LinearLayout>
2<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 android:layout_width="match_parent"
4 android:layout_height="match_parent"
5 android:orientation="vertical" >
6 <WebView
7 android:id="@+id/info_webView"
8 android:layout_width="match_parent"
9 android:layout_height="match_parent" />
10
11</LinearLayout>
AndroidManifest.xml
1<?xml version="1.0" encoding="utf-8"?>
2<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3 package="my.package.path"
4 android:versionCode="3"
5 android:versionName="2.0.0" >
6
7 <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15" />
8 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
9 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
10 <uses-permission android:name="android.permission.INTERNET"/>
11
12 <application
13 android:icon="@drawable/logo_icon"
14 android:label="@string/app_name"
15 android:theme="@style/my.Theme">
16 <activity
17 android:name=".ui.HomeActivity"
18 android:label="@string/app_name" >
19 <intent-filter>
20 <action android:name="android.intent.action.MAIN" />
21
22 <category android:name="android.intent.category.LAUNCHER" />
23 </intent-filter>
24 </activity>
25 </application>
26
27</manifest>
2<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3 package="my.package.path"
4 android:versionCode="3"
5 android:versionName="2.0.0" >
6
7 <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15" />
8 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
9 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
10 <uses-permission android:name="android.permission.INTERNET"/>
11
12 <application
13 android:icon="@drawable/logo_icon"
14 android:label="@string/app_name"
15 android:theme="@style/my.Theme">
16 <activity
17 android:name=".ui.HomeActivity"
18 android:label="@string/app_name" >
19 <intent-filter>
20 <action android:name="android.intent.action.MAIN" />
21
22 <category android:name="android.intent.category.LAUNCHER" />
23 </intent-filter>
24 </activity>
25 </application>
26
27</manifest>
Langsam verzweifel ich dran...
Martin
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.