我有一个ViewPager
,每个视图都是WebView
。我想,如果用户点击其中一个WebViews
中的链接,则将Actionbar
的标题设置为当前网页。
我希望我可以使用shouldOverrideUrlLoading
来执行此操作,但页面标题始终是上一页。因此,如果用户点击链接1,则链接2和链接3.在第3页,链接2的标题显示在Actionbar
中。
如果我将标题设置代码放在onPageFinished
中,则页面标题将设置为ViewPager
的下一个视图,因为ViewPager
执行上一个/下一个视图性能
片段
public class Browser extends SherlockFragment {
private OnBrowserSetTitle mBrowserSetTitle;
@Override
public void onAttach(Activity act) {
super.onAttach(act);
mBrowserSetTitle = (OnBrowserSetTitle)act;
}
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
activity = getActivity();
setHasOptionsMenu(true);
mWebView = (WebView)getView().findViewById(R.id.webview);
mWebView.loadUrl("http://www.google.com");
mWebView.setWebViewClient(new WebViewClient() {
public void onPageFinished(WebView view, String url) {
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
if (view.getTitle() != null && view.getTitle().length() > 0)
{
mBrowserSetTitle.onBrowserSetTitle(mTitle);
}
return true;
}
});
}
}
活动
public class BrowserPager extends SherlockFragmentActivity implements Interfaces.OnBrowserSetTitle {
@Override
public void onCreate(final Bundle icicle)
{
super.onCreate(icicle);
setContentView(R.layout.browser_pager);
}
@Override
public void onBrowserSetTitle(String title) {
getSupportActionBar().setTitle(title);
}
}
答案 0 :(得分:1)
将onBrowserSetTitle
更改为具有以下定义:
@Override
public void onBrowserSetTitle(String title, View view) {
if (mViewPager.getCurrentItem() == mViewPager.getAdapter().getItemPosition(view)) {
getSupportActionBar().setTitle(title);
}
}
然后从onBrowserSetTitle
致电onPageFinished
,如此:
@Override
public void onPageFinished(WebView view, String url) {
if (view.getTitle() != null && view.getTitle().length() > 0) {
mBrowserSetTitle.onBrowserSetTitle(mTitle, view);
}
}