2016-10-09 2 views
0

мне нужно вытащить из верхней части, чтобы обновить свой веб-просмотра я нашел это на сайте разработчиков Android, но я не знаю, как использовать егоКак добавить SwipeRefreshLayout в WebView

XML код

<android.support.v4.widget.SwipeRefreshLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/swiperefresh" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<ListView 
    android:id="@android:id/list" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 

Java код

mySwipeRefreshLayout.setOnRefreshListener(
new SwipeRefreshLayout.OnRefreshListener() { 
    @Override 
    public void onRefresh() { 
     Log.i(LOG_TAG, "onRefresh called from SwipeRefreshLayout"); 

     // This method performs the actual data-refresh operation. 
     // The method calls setRefreshing(false) when it's finished. 
     myUpdateOperation(); 
    } 
} 

);

ответ

1

Ты должен поставить WebView в SwipeRefreshLayout:

public class MainActivity extends AppCompatActivity { 

    WebView webView; 
    SwipeRefreshLayout swipeRefreshLayout; 
    String currentUrl = "https://news.ycombinator.com/"; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     webView = (WebView) findViewById(R.id.webView); 
     swipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipeRefreshLayout); 

     webView.loadUrl(currentUrl); 
     webView.setWebViewClient(new MyWebViewClient()); 

     swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { 
      @Override 
      public void onRefresh() { 
       webView.loadUrl(currentUrl); 
      } 
     }); 


    } 

    public class MyWebViewClient extends WebViewClient{ 

     @Override 
     public void onPageFinished(WebView view, String url) { 
      swipeRefreshLayout.setRefreshing(false); 
      currentUrl = url; 
      super.onPageFinished(view, url); 
     } 
    } 


} 

swipeRefreshLayout.setRefreshing(false) останавливает анимацию.

+0

Ok спасибо господин бет знает, что есть probem знает в этом коде dosen't обновив сайт просто, но он двигается назад на главной странице он не перезагрузить эту страницу он возвращается к корневому URL-адресу, который был указан снова, поэтому теперь нам нужно получить доступ к текущему URL-адресу webview, поэтому, пожалуйста, вы можете помочь мне с этим –

+0

Прежде всего, не мистер. Давайте отбросим предрассудки. Во-вторых, вы можете проверить отредактированный код и поприветствовать вас. –

+0

Извините, но это не изменило для меня ничего для Ex. если есть строка currentUrl = "youtube.com"; и ваш WebView в этом URL «https://www.youtube.com/watch?v=q4y0KOeXViI», так что если вы делаете обновление для этого сайта, так что будет вернуться к исходному URL веб-страницы, что внутри данного CURRENTURL –

0

Чтобы иметь возможность обновить страницу с тем же URL работает

  1. Вы должны сохранить ссылку в ISharedPreferences, когда страница первая загружена

    public override void OnPageFinished(WebView view, string url) 
    { 
        ISharedPreferences prefs = PreferenceManager.GetDefaultSharedPreferences(this); 
        ISharedPreferencesEditor editor = prefs.Edit(); 
        editor.PutString("MyURL", url); 
        editor.Commit(); 
    } 
    
  2. при загрузке URL для reffresh использования сохраненный URL

    string SaveURL = prefs.GetString("MyURL", ""); 
    webView.loadUrl(SaveURL); 
    

    - Другое решение Webview.Reload(); // Этот код Обновляет текущей страницу загруженную

Смежные вопросы