WebView调用setContentView错误

时间:2014-06-07 03:41:59

标签: java android eclipse android-webview

好的,因为我的WebView加载页面通常需要2秒钟,所以我决定为我的用户显示“加载”屏幕。我发现了一个名为Shimmer的非常好的库,它显示了一个动画文本视图。当我的webview开始加载页面时,我将setContentView调用到闪烁布局,当它完成后,我再次将setContentView调用到webview。问题是当我调用setContentView时,WebView是空白的。这是为什么?

这是我的代码:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.webview);

        WebView webView = (WebView) findViewById(R.id.webview);
        webView.setWebViewClient(new WebViewClient(){
            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon)
            {
                // TODO show you progress image
                super.onPageStarted(view, url, favicon);
                Log.i("WEBVIEW", "Loading");
                shimmer = new Shimmer();
                setContentView(R.layout.shimmer);
                ShimmerTextView shimmerTextView = (ShimmerTextView) findViewById(R.id.shimmer_tv);
                shimmer.start(shimmerTextView);
            }

            @Override
            public void onPageFinished(WebView view, String url)
            {
                // TODO hide your progress image
                super.onPageFinished(view, url);
                Log.i("WEBVIEW", "Loading Done");
                shimmer.cancel();
                setContentView(R.layout.webview);
            }
        });
        webView.loadUrl(url);

1 个答案:

答案 0 :(得分:1)

我很确定您正在实施Shimmer错误。您不应多次拨打setContentView()

你应该这样做:

1)添加包含Fragment的{​​{1}}并加载网址。

2)添加WebView包含Fragment Shimmer的{​​{1}},并在View ShimmerView后加Fragment {1}}。

3)当onCreateView()完成加载后,使用Otto之类的事件总线让包含WebView Activity的{​​{1}}知道将其删除。