2016-11-30 3 views
-3

Ja ich lese fast alle Themen über Webview Fortschrittsbalken, versuchte fast alles. Aber sie funktionieren nicht für mich, meine App stürzt ab, wenn ich die Beispiele benutze.Android WebView OnClick ProgressBar

Ich benutze lokale (ondevice) html in meiner webview app und ich will Fortschrittsbalken (Benachrichtigung) nach den Links angezeigt, die auf diesem HTML geklickt werden. Hier ist mein Code.

Activity_Main.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/activity_main" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context="com.dijitalyayincim.cekmekoy.cekmekoy_web.MainActivity"> 

    <WebView 
    android:id="@+id/activity_main_webview" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

</WebView> 

</RelativeLayout> 

Main_Activity.java

package com.dijitalyayincim.cekmekoy.cekmekoy_web; 

import android.support.v7.app.ActionBar; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.webkit.WebSettings; 
import android.webkit.WebView; 

public class MainActivity extends AppCompatActivity { 
private WebView mWebView; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    ActionBar ab =getSupportActionBar(); 
    ab.setDisplayShowHomeEnabled(true); 
    ab.setIcon(R.mipmap.ic_launcher); 
    mWebView = (WebView) findViewById(R.id.activity_main_webview); 
    WebSettings webSettings = mWebView.getSettings(); 
    webSettings.setJavaScriptEnabled(true); 

    mWebView.loadUrl("file:///android_asset/www/index.html"); 
    mWebView.setWebViewClient(new MyAppWebViewClient()); 


} 
@Override 
public void onBackPressed() { 
    if(mWebView.canGoBack()) { 
     mWebView.goBack(); 
    } else { 
     super.onBackPressed(); 
    } 
    } 
} 

MyAppWebViewClient.java

package com.dijitalyayincim.cekmekoy.cekmekoy_web; 

import android.content.Intent; 
import android.net.Uri; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 

/** 
* Created by ahmet.sevinc on 18.11.2016. 
*/ 

public class MyAppWebViewClient extends WebViewClient { 

@Override 
public boolean shouldOverrideUrlLoading(WebView view, String url) { 
    if(Uri.parse(url).getHost().endsWith("cekmekoy.info")) { 
     return false; 
    } 

    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); 
    view.getContext().startActivity(intent); 
    return true; 
} 
} 

Antwort

1

Dieser Code funktioniert perfekt für mich .. Geben Sie es versuchen, ein

import android.app.Activity; 
import android.app.ProgressDialog; 
import android.content.Intent; 
import android.graphics.Bitmap; 
import android.support.v4.view.GravityCompat; 
import android.support.v4.widget.DrawerLayout; 
import android.support.v7.app.ActionBar; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.webkit.WebSettings; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 
import android.widget.ProgressBar; 

public class About_Activity extends AppCompatActivity { 
    private WebView webView; 
    private boolean isRedirected; 

    private ProgressBar progress; 
    String url = "Your URL"; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.activity_settings); 

     ActionBar actionBar = getSupportActionBar(); 
     if (actionBar != null) { 
      // Show the Up button in the action bar. 
      actionBar.setDisplayHomeAsUpEnabled(true); 
     } 

     webView = (WebView) findViewById(R.id.webView); 
     startWebView(webView, url); 

    } 

    private void startWebView(WebView webView,String url) { 

     webView.setWebViewClient(new WebViewClient() { 
      ProgressDialog progressDialog; 

      public boolean shouldOverrideUrlLoading(WebView view, String url) { 
       view.loadUrl(url); 
       isRedirected = true; 
       return false; 
      } 

      @Override 
      public void onPageStarted(WebView view, String url, Bitmap favicon) { 
       super.onPageStarted(view, url, favicon); 
       isRedirected = false; 
      } 

      public void onLoadResource (WebView view, String url) { 
       if (!isRedirected) { 
        if (progressDialog == null) { 
         progressDialog = new ProgressDialog(About_Activity.this); 
         progressDialog.setMessage("Loading..."); 
         progressDialog.show(); 
        } 
       } 

      } 
      public void onPageFinished(WebView view, String url) { 
       try{ 
        isRedirected=true; 

        if (progressDialog.isShowing()) { 
         progressDialog.dismiss(); 
         progressDialog = null; 
        } 



       }catch(Exception exception){ 
        exception.printStackTrace(); 
       } 
      } 

     }); 

     webView.getSettings().setJavaScriptEnabled(true); 
     webView.loadUrl(url); 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // handle arrow click here 
     if (item.getItemId() == android.R.id.home) { 
      finish(); // close this activity and return to preview activity (if there is any) 
     } 

     return super.onOptionsItemSelected(item); 
    } 
} 

layout.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" 
    tools:context="in.invis.navigationdrawer.MainActivity" 
    tools:showIn="@layout/app_bar_main"> 

    <WebView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:id="@+id/webView" 
     /> 
</RelativeLayout> 
+0

danke, ich habe geändert About_Activity MainActivity, Ihre URL zu "file: ///android_asset/www/index.html" aber jetzt bekomme ich diesen Fehler webView = (WebView) findViewById (R.id.webView); Fehler: (38, 46) error: kann keine Symbolvariable finden webView – bahmet

+0

du brauchst eine Layoutdatei, die ein webview Element hat – vishnumm93

+0

YESS wenn ich Android geändert habe: id = "@ + id/activity_main_webview" zu android: id = "@ + id/webview "in activity_main.xml hat alles funktioniert ... – bahmet

0

Sie können dies versuchen,

mWebview = (WebView) findViewById(R.id.mWebview); 
mWebview.setWebViewClient(new myWebClient()); 
    mWebview.getSettings().setJavaScriptEnabled(true); 
    mWebview.loadUrl("file:///android_asset/www/index.html"); 

/** 
* Load Webview with using Progressbar 
*/ 
public class myWebClient extends WebViewClient { 
@Override 
public void onPageStarted(WebView view, String url, Bitmap favicon) { 
    // TODO Auto-generated method stub 
    super.onPageStarted(view, url, favicon); 
} 

@Override 
public boolean shouldOverrideUrlLoading(WebView view, String url) { 
    // TODO Auto-generated method stub 

    view.loadUrl(url); 
    return true; 

} 

@Override 
public void onPageFinished(WebView view, String url) { 
    // TODO Auto-generated method stub 
    super.onPageFinished(view, url); 

    progressBar.setVisibility(View.GONE); 
} 

}

+0

Dank für Ihre prompte Antwort, jetzt habe ich Fehler: (65 , 13) error: kann die Variable progressBar des Symbols nicht finden, ich importiere bereits android.widget.ProgressBar; – bahmet

Verwandte Themen