设置进度条类型微调器的可见性时,应用程序崩溃

时间:2015-01-08 11:49:05

标签: android webview progress-bar

我正在构建一个打开webview的应用程序,当我打开网页时,我想显示一个微调器类型的进度条,但是当我使用setvisibility()更改可见性时,应用程序崩溃了。

这是我的活动代码:

public class MainActivity extends Activity {

    WebView website;
    ProgressBar pro;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        pro= (ProgressBar) findViewById(R.id.progress);
        setContentView(R.layout.activity_main);

        website = (WebView) findViewById(R.id.website);
        website.setWebViewClient(new WebViewClient());

        WebSettings webSettings = website.getSettings();
        webSettings.setJavaScriptEnabled(true);
        website.loadUrl("http://www.google.com");
        website.setWebChromeClient(new WebChromeClient() {

            @Override
            public void onProgressChanged(WebView view, int newProgress) {
                //change your progress bar
                if(pro.getVisibility()==view.VISIBLE){
                   pro.setVisibility(view.INVISIBLE);
                }
                else {
                    pro.setVisibility(view.VISIBLE);
                }
            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if ((keyCode ==KeyEvent.KEYCODE_BACK) && website.canGoBack()) {
            website.goBack();
            return true;
        }
        else{
            finish();
        }
        return super.onKeyDown(keyCode, event);
    }

}

记录猫

3:08:57 PM Gradle build在9秒内完成 下午3:22:44 Gradle build在35秒内完成 下午3:24:41 Gradle build在7秒内完成 3:24:44 PM会话'app':正在运行 下午3:26:47 Gradle build在6秒内完成 3:26:49 PM会话'app':正在运行 下午3:30:31 Gradle build在13秒内完成 3:30:34 PM会话'app':正在运行 下午3:38:54 Gradle build在9秒内完成 3:39:02 PM会话'app':正在运行 3:39:02 PM会话'app':正在运行 下午3:39:04 Gradle build在10秒内完成 3:39:06 PM会话'app':调试器已连接 下午3:57:21 Gradle build在11秒内完成 3:57:24 PM会话'app':正在运行 上午11:16:08 Gradle build在37秒完成 上午11:16:11会话'app':正在运行 上午11:52:39 Gradle build在11秒内完成了2次错误 上午11:55:00 Gradle build在28秒内完成 上午11:58:45 Gradle build在18秒完成 上午11:59:04 Gradle build在6秒内完成 上午11:59:09会话'app':正在运行 下午3:51:43 Gradle build在25秒内完成 下午3:53:31 Gradle build在40秒内完成 下午3:53:33会话'app':正在运行 下午3:56:04 Gradle build在2秒内完成 3:56:07 PM会话'app':正在运行 下午3:56:51 Gradle build在2秒完成 下午4:04:03 Gradle build在6秒内完成 下午4:04:07会话'app':正在运行 下午4:04:54 Gradle build在4秒内完成 下午4:04:56会话'app':正在运行 下午4:05:34 Gradle build在3秒内完成 下午4:05:37会话'app':正在运行 下午4:08:51 Gradle build在32秒内完成 4:09:00 PM会话'app':正在运行 下午4:13:42 Gradle构建在36秒内完成 下午4:13:44会话'app':正在运行 下午4:50:31 Gradle build在14秒内完成 下午4:50:36会话'app':正在运行 下午5:04:19 Gradle build在10秒内完成 5:04:22 PM会话'app':正在运行

1 个答案:

答案 0 :(得分:1)

你应该致电:

setContentView(R.layout.activity_main);

致电之前:

pro = (ProgressBar) findViewById(R.id.progress);

因为您必须在查找子子视图之前设置视图。