我正在构建一个打开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':正在运行
答案 0 :(得分:1)
你应该致电:
setContentView(R.layout.activity_main);
致电之前:
pro = (ProgressBar) findViewById(R.id.progress);
因为您必须在查找子子视图之前设置视图。