Индикатор выполнения Android получает исключение

Я работаю с веб-представлением в Android и пытаюсь добавить индикатор выполнения, вот мои коды:

case R.id.studentsite:
            getWindow().requestFeature(Window.FEATURE_PROGRESS);
            setContentView(R.layout.webview);
            WebView wv1 = (WebView)findViewById(R.id.webview);
            WebSettings ws1 = wv1.getSettings();
            final Activity activity = this;
            wv1.setWebChromeClient(new WebChromeClient() {
              public void onProgressChanged(WebView view, int progress) {
                // Activities and WebViews measure progress with different scales.
                // The progress meter will automatically disappear when we reach 100%
                activity.setProgress(progress * 1000);
              }
            });
            wv1.setWebViewClient(new WebViewClient() {
              public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                Toast.makeText(activity, "Oh no! " + description, Toast.LENGTH_SHORT).show();
              }
            });
            wv1.getSettings().setBuiltInZoomControls(true);
            ws1.setJavaScriptEnabled(true);
            wv1.setWebViewClient(new WebViewClient());
            wv1.loadUrl("http://www.studentsite.gunadarma.ac.id");
            break;

Проблема в том, что у меня есть исключение для LOGCAT:

09-17 13:51:34.487: ERROR/AndroidRuntime(1331): FATAL EXCEPTION: main 09-17 13:51:34.487: ERROR/AndroidRuntime(1331): android.util.AndroidRuntimeException: requestFeature() must be called before adding content 09-17 13:51:34.487: ERROR/AndroidRuntime(1331): at com.android.internal.policy.impl.PhoneWindow.requestFeature(PhoneWindow.java:181) 09-17 13:51:34.487: ERROR/AndroidRuntime(1331): at com.ugsimplify.ugweb.callintent(ugweb.java:89) 09-17 13:51:34.487: ERROR/AndroidRuntime(1331): at com.ugsimplify.ugweb$1.onClick(ugweb.java:29) 09-17 13:51:34.487: ERROR/AndroidRuntime(1331): at android.view.View.performClick(View.java:2485) 09-17 13:51:34.487: ERROR/AndroidRuntime(1331): at android.widget.CompoundButton.performClick(CompoundButton.java:99) 09-17 13:51:34.487: ERROR/AndroidRuntime(1331): at android.view.View$PerformClick.run(View.java:9080) 09-17 13:51:34.487: ERROR/AndroidRuntime(1331): at android.os.Handler.handleCallback(Handler.java:587) 09-17 13:51:34.487: ERROR/AndroidRuntime(1331): at android.os.Handler.dispatchMessage(Handler.java:92) 09-17 13:51:34.487: ERROR/AndroidRuntime(1331): at android.os.Looper.loop(Looper.java:123) 09-17 13:51:34.487: ERROR/AndroidRuntime(1331): at android.app.ActivityThread.main(ActivityThread.java:3647) 09-17 13:51:34.487: ERROR/AndroidRuntime(1331): at java.lang.reflect.Method.invokeNative(Native Method) 09-17 13:51:34.487: ERROR/AndroidRuntime(1331): at java.lang.reflect.Method.invoke(Method.java:507) 09-17 13:51:34.487: ERROR/AndroidRuntime(1331): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 09-17 13:51:34.487: ERROR/AndroidRuntime(1331): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 09-17 13:51:34.487: ERROR/AndroidRuntime(1331): at dalvik.system.NativeStart.main(Native Method)

У вас есть идеи, как это исправить? Спасибо.


person Raditya Kurnianto    schedule 17.09.2012    source источник
comment
Activity.setProgress это правильно??   -  person Padma Kumar    schedule 17.09.2012
comment
Это должно быть правильно, но он не показывает индикатор выполнения, не могли бы вы помочь?   -  person Raditya Kurnianto    schedule 17.09.2012
comment
вы можете получить ответ здесь: stackoverflow.com/q/4988676/1012284   -  person Padma Kumar    schedule 17.09.2012


Ответы (2)


Звоните ниже линии в Oncreate сразу после super.oncreate

getWindow().requestFeature(Window.FEATURE_PROGRESS);

Вы вызываете его нажатием кнопки, для которого вы уже установили содержимое. Функция индикатора выполнения может быть запрошена только перед setContentView в самый первый раз.

person nandeesh    schedule 17.09.2012
comment
спасибо за решение моей проблемы, но не могли бы вы сказать мне, почему я ничего не вижу о индикаторе выполнения, он ничего не показывает. - person Raditya Kurnianto; 17.09.2012
comment
это будет в строке заголовка. Индикатор выполнения активности принимает значения от 0 до 10000, поэтому я думаю, вам придется умножать на 100, а не на 1000. - person nandeesh; 17.09.2012

Согласно logcat, вы использовали requestFeature после установки contentView.

Часть кода, который вы разместили, идеальна.

Я подозреваю, что вы уже использовали setContentView где-то еще, возможно, в методе onCreate.

person Umesh    schedule 17.09.2012