在我的應用程序中有一個顯示Html內容的WebView和一個後退按鈕,讓用戶在瀏覽器歷史記錄中導航回來。在WebChromeClient中,我在onReceivedTitle()中獲得Html頁面標題並將其顯示在我的應用程序中。goBack()之後從WebView History獲取Html頁面的標題?
顯示用戶第一頁並顯示第一頁標題。用戶可以點擊Html中的超鏈接進入下一頁。第二頁有一個不同的標題,並且這是正確顯示。問題是,如果用戶比單擊「後退」按鈕,第一頁從歷史播放,但onReceivedTitle()不會再次調用。所以我的第一頁顯示第二頁的錯誤標題。
如何獲得正在通過調用goBack()加載的頁面的標題?
下面是一些簡化的代碼來演示。想象一下帶有TextView,WebView和Button的佈局。另外,想象資產文件夾中的兩個Html文件,其中pageone.html鏈接到pagetwo.html,並且這兩個頁面具有不同的標題。
public class MyActivity extends Activity {
WebView webView;
TextView title;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
webView = (WebView) findViewById(R.id.webView);
title = (TextView) findViewById(R.id.title);
webView.loadUrl("file:///android_asset/pageone.html");
webView.setWebChromeClient(new WebChromeClient() {
@Override
public void onReceivedTitle(WebView view, String titleText) {
super.onReceivedTitle(view, titleText);
title.setText(String.format("Title: %s", titleText));
}
});
final Button button = (Button) findViewById(R.id.backButton);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if (webView.canGoBack()) {
webView.goBack();
}
}
});
}
}
你可以得到webview並調用webView.getTitle(); –
是的,但在什麼情況下? onPageFinished()可以使用,但是然後onReceivedTitle()似乎沒用。 –