gpt4 book ai didi

android - WebView 未加载 ViewPager

转载 作者:太空狗 更新时间:2023-10-29 13:30:51 27 4
gpt4 key购买 nike

我正在尝试构建一个包含一堆 WebViewsViewPager。我能够让 ViewPager 正常工作,但是,只有初始的 WebView 正在加载它的内容。当我滑动到其他 View 时,它们会变成空白。没有错误消息或任何东西。当我断点代码时,loadUrl 被正确的 Url 击中,所以不确定发生了什么:

Activity

public class BrowserPager extends SherlockFragmentActivity {
private List <String> urls;
private static int NUMBER_OF_PAGES;

@Override
public void onCreate(final Bundle icicle)
{
setContentView(R.layout.browser_pager);

urls = GetUrls();
NUMBER_OF_PAGES = urls.getCount();

mViewPager = (ViewPager)findViewById(R.id.pager);
mMyFragmentPagerAdapter = new MyFragmentPagerAdapter(getSupportFragmentManager());
mViewPager.setAdapter(mMyFragmentPagerAdapter);
}

private static class MyFragmentPagerAdapter extends FragmentStatePagerAdapter {

public MyFragmentPagerAdapter(FragmentManager fm) {
super(fm);
}

@Override
public Fragment getItem(int index) {
return Browser.newInstance(urls.get(index));
}

@Override
public int getCount() {
return NUMBER_OF_PAGES;
}
}
}

fragment

public class Browser extends SherlockFragment {

private String mUrl;
private WebView mWebView;

public static Browser newInstance(String url) {

Browser b = new Browser();
Bundle bundle = new Bundle();
bundle.putString("url", url);
b.setArguments(bundle);

return b;
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

if (getArguments() != null)
mUrl = getArguments().getString("url");

return inflater.inflate(R.layout.browser, container, false);
}

@Override
public void onResume()
{
super.onResume();

DisplaySite();
}

private void DisplaySite() {

mWebView = (WebView)getActivity().findViewById(R.id.webview);

mWebView.getSettings().setSupportZoom(true);
mWebView.getSettings().setBuiltInZoomControls(true);
mWebView.loadUrl(mUrl);

final ProgressBar progess = (ProgressBar)getActivity().findViewById(R.id.ProgressBar);

mWebView.setWebViewClient(new WebViewClient() {
public void onPageStarted(WebView view, String url, Bitmap favicon) {
progess.setVisibility(View.VISIBLE);
progess.setProgress(0);
}

public void onPageFinished(WebView view, String url) {
progess.setVisibility(View.GONE);
}

});

mWebView.setWebChromeClient(new WebChromeClient() {

public void onProgressChanged(WebView view, int progress) {
progess.setProgress(progress);
}
});
}
}

最佳答案

问题可能出在下面这行:

mWebView = (WebView)getActivity().findViewById(R.id.webview);

在这里你问的是Activity (!) 找到 ID 为 R.id.webview 的第一个 View .现在想想当有多个相同的实例时会发生什么 Browser附加到 Activity 的 fragment ... 确切地说,总是返回具有该 id 的第一次出现。换句话说:url 将始终加载到 WebView 中。第一个附Browser fragment 。

而不是膨胀 WebView来自 Activity ,你会想要给 WebView 充气与每个 Browser 相关通过在 fragment 的 Root View 中找到 View 来 fragment :

mWebView = (WebView) getView().findViewById(R.id.webview);

基本上,您需要为 View 查找使用正确的范围。

关于android - WebView 未加载 ViewPager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15626734/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com