1

私は を持っておりViewPager、各ビューはWebViewです。WebViewsユーザーが のいずれかのリンクをクリックした場合に、 のタイトルをActionbar現在の Web ページに設定したいと思います。

そのために使用できることを望んshouldOverrideUrlLoadingでいましたが、ページ タイトルは常に前のページです。したがって、ユーザーがリンク 1、リンク 2、リンク 3 の順にクリックすると、リンク 2 のタイトルがページ 3 に表示されますActionbar

にタイトル設定コードを入れると、パフォーマンスのために前/次のビューを実行するためonPageFinished、ページ タイトルが の次のビューに設定されます。ViewPagerViewPager

断片

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);
    }
}
4

1 に答える 1

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);
    }
}   
于 2013-03-31T00:56:04.177 に答える