2016-12-12 7 views
0

Ich erstellte eine grundlegende Webview-App Anweisungen aus dem Web folgen. alles funktioniert gut, mit Ausnahme der Backpress-Taste, wenn Webview mit Server-Backpress auf Home-Bildschirm verbunden, aber wenn ich die Home-in-Menü-Elemente (Suche und überpage) klickte die App geschlossen. Hier ist mein CodeAndroid onBackPressed Problem

MainActivity.java

package com.dijitalyayincim.cekmekoy.cekmekoy_web; 
import android.app.ActionBar; 
import android.app.Activity; 
import android.app.ProgressDialog; 
import android.content.Intent; 
import android.graphics.Bitmap; 
import android.net.Uri; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuInflater; 
import android.view.MenuItem; 
import android.view.View; 
import android.webkit.WebSettings; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 
import android.widget.ProgressBar; 

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



    private ProgressBar progress; 

    String url = "file:///android_asset/www/index.html"; 
    String url1 ="http://www.cekmekoy.info/index.php?option=com_sppagebuilder&view=page&id=12"; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.activity_main); 
     //setContentView(R.layout.aa); 



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

    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 

     switch (item.getItemId()) { 
      case android.R.id.home: 
       finish(); 
       return true; 

      case R.id.action_info: 
       Element adsElement = new Element(); 
       adsElement.setTitle("Advertise with us"); 

       View aboutPage = new AboutPage(this) 
         .isRTL(false) 
         .setImage(R.drawable.logo_cekmekoy) 
         .addItem(new Element().setTitle("Version 1.0")) 
         .addItem(adsElement) 
         .addGroup("Bize Ulaşın") 
         .addEmail("[email protected]") 
         .addWebsite("http://www.cekmekoy.info/") 
         .addFacebook("cekmekoyinfo") 
         .addTwitter("cekmekoyinfo") 
         .addYoutube("UCYt3Z595jctz5oUhg0SMLqQ") 
         .addInstagram("cekmekoy_info") 
         .create(); 

         setContentView(aboutPage); 
       setTitle("Bize Ulaşın"); 
         return true; 


      case R.id.action_search: 

       setContentView(R.layout.test); 
       webView = (WebView) findViewById(R.id.search); 
       startWebView(webView, url1); 
       setTitle("Arama"); 



      default: 
       // If we got here, the user's action was not recognized. 
       // Invoke the superclass to handle it. 
       return super.onOptionsItemSelected(item); 

     } 
    } 
    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.menu, menu); 
     return true; 
    } 
    private void startWebView(WebView webView,String url) { 

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


      public boolean shouldOverrideUrlLoading(WebView view, String url) { 
       if (url.startsWith("tel:")) { 
        Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse(url)); 
        startActivity(intent); 
        view.reload(); 
        return true; 
       } 
       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(MainActivity.this); 
         progressDialog.setMessage("Yükleniyor..."); 
         progressDialog.show(); 
        } 
       } 

      } 
      public void onPageFinished(WebView view, String url) { 
       MainActivity.this.setTitle(view.getTitle()); 
       try{ 
        isRedirected=true; 

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



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

     }); 

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


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

i wirklich zu schätzen, wenn Sie

dank helfen ...

+0

Also, was willst du? Poste deutlich. –

+0

Dies ist korrekt, da bei Such- oder Infoaktionen ein neuer Inhalt auf das Aktivitätslayout gesetzt wird und dieser mit der Webansicht verknüpft ist, die nur die erste Seite enthält, die nicht zur Startseite zurückkehren kann. So wird es auf der Rückseite gemäß Ihrem Code geschehen. Überprüfen Sie, indem Sie eine weitere Aktion auf der gesuchten oder Info-Web-Ansichtsseite ausführen, indem Sie eine weitere Seite öffnen und dann die Taste drücken. –

+0

Entschuldigung, wenn ich überaboutpage (menuitem) und Suchseite (menuitem) zurückdrücke, möchte ich, dass es auf die Homepage geht und dann, wenn erneut komprimiert, exit – bahmet

Antwort

0
@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (event.getAction() == KeyEvent.ACTION_DOWN) { 
     switch (keyCode) { 
      case KeyEvent.KEYCODE_BACK: 
       if (mWebView.canGoBack()) { 
        mWebView.goBack(); 
       } else { 
        finish(); 
       } 
       return true; 
     } 

    } 
    return super.onKeyDown(keyCode, event); 
} 

Verwenden Sie diesen Code. Hoffnung hilft dir.

0

Kommentar diese Ziellinie.und verwenden Sie Ihre Methode. webView.goBack();

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 

    switch (item.getItemId()) { 
     case android.R.id.home: 
//    finish(); 
      return true; 
} 
} 
+0

sorry hat nicht funktioniert – bahmet