【发布时间】:2013-03-31 00:46:52
【问题描述】:
我有一个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);
}
}
【问题讨论】:
标签: android android-webview actionbarsherlock android-viewpager