0

Chaque fois que je balaye pour actualiser, mon application recharge à la page d'accueil au lieu de recharger la même page Web. J'ai essayé tous les moyens de détecter ce comportement mais je n'ai rien trouvé. Pouvez-vous dire quel est le problème ici?Comment arrêter l'application WebView d'aller à la page d'accueil après chaque balayage à actualiser?

Glisser pour actualiser devrait seulement être resfreshing la page Web actuelle au lieu de l'application entière droite?

MainActivity.java

package com.yoalfaaz.yoalfaaz; 

     import android.content.Intent; 
     import android.os.Bundle; 
     import android.support.design.widget.FloatingActionButton; 
     import android.support.design.widget.Snackbar; 
     import android.support.v4.widget.SwipeRefreshLayout; 
     import android.support.v7.app.AppCompatActivity; 
     import android.support.v7.widget.ShareActionProvider; 
     import android.support.v7.widget.Toolbar; 
     import android.view.View; 
     import android.view.Menu; 
     import android.view.MenuItem; 
     import android.webkit.WebSettings; 
     import android.webkit.WebView; 
     import android.webkit.WebViewClient; 
     import android.support.v4.view.MenuItemCompat; 

public class MainActivity extends AppCompatActivity { 
    private WebView YoWeb; 
    private ShareActionProvider mShareActionProvider; 

    SwipeRefreshLayout swipe; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     swipe = (SwipeRefreshLayout) findViewById(R.id.swiperefresh); 
     swipe.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { 
      @Override 
      public void onRefresh() { 
       LoadWeb(); 
      } 
     }); 
     LoadWeb(); 
    } 

    public void LoadWeb() { 
     YoWeb = (WebView)findViewById(R.id.webview); 
     WebSettings webSettings = YoWeb.getSettings(); 
     webSettings.setJavaScriptEnabled(true); 
     YoWeb.loadUrl("https://www.yoalfaaz.com"); 
     swipe.setRefreshing(true); 
     YoWeb.setWebViewClient(new WebViewClient() { 

      //onPageFinished Method 
      public void onPageFinished(WebView view, String url) { 
       //Hide the SwipeRefreshLayout 
       swipe.setRefreshing(false); 
      } 
     }); 
    } 

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

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     switch (item.getItemId()) { 
      case R.id.action_settings: 
       return true; 

      default: 
       return super.onOptionsItemSelected(item); 
     } 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate menu resource file. 
     getMenuInflater().inflate(R.menu.menu_main, menu); 

     // Locate MenuItem with ShareActionProvider 
     MenuItem item = menu.findItem(R.id.menu_item_share); 

     // Fetch and store ShareActionProvider 
     mShareActionProvider = (ShareActionProvider) MenuItemCompat.getActionProvider(item); 

     // Return true to display menu 
     return true; 
    } 

    // Call to update the share intent 
    private void setShareIntent(Intent shareIntent) { 
     if (mShareActionProvider != null) { 
      mShareActionProvider.setShareIntent(shareIntent); 
     } 
    } 

    //private Intent setShareIntent() { 
    // Intent shareIntent = new Intent(); 
    // shareIntent.setAction(Intent.ACTION_SEND); 
    // shareIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send."); 
    // shareIntent.setType("text/plain"); 
    // startActivity(shareIntent); 
    // return shareIntent; 
    //} 
} 

content_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.ConstraintLayout 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="com.yoalfaaz.yoalfaaz.MainActivity" 
    tools:showIn="@layout/activity_main"> 

    <android.support.v4.widget.SwipeRefreshLayout 

     android:id="@+id/swiperefresh" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"> 

     <WebView 
      android:id="@+id/webview" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      /> 

    </android.support.v4.widget.SwipeRefreshLayout> 
</android.support.constraint.ConstraintLayout> 

Ce sont les deux responsables de fichiers balayez pour rafraîchir et vous pouvez voir tout le code qui est là. J'espère que vous pourriez être en mesure de comprendre exactement quel est le problème ici.

+0

Est-ce à cause de l'accident? il va à baseAvitivity –

+0

@AnkitAman l'application fonctionne bien, mais peut-être après le balayage, il va à baseActivity. Pouvez-vous dire comment résoudre ce problème? –

+0

pouvez-vous mettre un peu de journal après le balayage? –

Répondre

1

Votre SwipeRefreshLayout.OnRefreshListener appelle la méthode LoadWeb. Dans LoadWeb vous appelez YoWeb.loadUrl ("https://www.yoalfaaz.com"); ce qui signifie que vous définissez toujours le webview pour aller à cette URL à l'actualisation. Changer votre code pour être comme ceci:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    YoWeb = (WebView)findViewById(R.id.webview); // Move your declaration up here 
    swipe = (SwipeRefreshLayout) findViewById(R.id.swiperefresh); 
    swipe.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { 
     @Override 
     public void onRefresh() { 
      LoadWeb(YoWeb.getUrl()); // Pass in the current url to refresh 
     } 
    }); 

    LoadWeb("https://www.yoalfaaz.com"); // load the home page only once 
} 

public void LoadWeb(String url) // Pass in URL you want to load 
{ 

    WebSettings webSettings = YoWeb.getSettings(); 
    webSettings.setJavaScriptEnabled(true); 
    YoWeb.loadUrl(url); // Load the URL passed into the method 
    swipe.setRefreshing(true); 
    YoWeb.setWebViewClient(new WebViewClient() { 

     //onPageFinished Method 
     public void onPageFinished(WebView view, String url) { 
      //Hide the SwipeRefreshLayout 
      swipe.setRefreshing(false); 
     } 
    }); 
} 
+0

Merci beaucoup, votre code a fonctionné comme un charme. Pouvez-vous dire exactement quels changements vous avez faits afin que je puisse mieux le comprendre? –

+0

Il y a des commentaires à côté de chaque changement que j'ai fait. –