Android 4.3 - веб-страница загрузки с JavaScript, нулевым указателем

У меня есть исключение нулевого указателя при использовании webView с Android 4.3, сегмент кода выглядит следующим образом:

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


    // get data from previous activity
    getAllDataFromPreviousActivity();


    loadingDialog = ProgressDialog.show(this, "", "loading page...");


    webView = (WebView) findViewById(R.id.webView1);


    webView.getSettings().setJavaScriptEnabled(true);       
    webView.addJavascriptInterface(new MyJavaScriptInterface(this), "Html");


    // construct url
    this.modifiedUrl = constructURL();
    webView.loadUrl(modifiedUrl);
    webView.setWebViewClient(new WebViewClient() {
        // ignore SSL error
        public void onReceivedSslError(WebView view,
                SslErrorHandler handler, SslError error) {
            handler.proceed();
        }

         @Override
         public void onPageStarted(WebView view, String url, Bitmap favicon)
         {
           loadingDialog.show();
         }

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            // TODO Auto-generated method stub
            view.loadUrl(url);
            return true;
        }

        // check title to determine which view should be displayed
        @Override
        public void onPageFinished(WebView view, String url) {
            /* To check whether webView reached Authorization code page */
            loadingDialog.dismiss();

            if (view.getTitle().equals("XXXX")) {
                RelativeLayout ealLogin = (RelativeLayout) findViewById(R.id.login_view);
                ealLogin.setVisibility(View.VISIBLE);
            }
});

Я использую webClient для отслеживания заголовка страницы, когда заголовок XXXX, я сделаю вид входа в систему видимым и предложу пользователю выполнить некоторые действия при входе в систему. ("modifyUrl", который загружает webView, является веб-страницей https с встроенным в исходный код javascript)

Приложение работает как шарм на эмуляторе Android 4.4. Тем не менее, когда я тестирую его на моем фактическом устройстве Samsung S3 (Android 4.3), он вызывает исключение нулевого указателя в методе OnPageFinish(). Это показывает, что view.getTitle() будет нулевым, потому что здесь само представление является нулевым. Я знаю, что, скорее всего, это некоторые проблемы с загрузкой веб-страницы с помощью JavaScript в Android 4.3. Есть ли способ решить эту проблему без обновления до Android 4.4? Или есть способ погулять? Спасибо за любую помощь!

Отредактировано: activity_webView.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 >

    <RelativeLayout
        android:id="@+id/login_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:visibility="gone"
        android:orientation="vertical" >

    <EditText
        android:id="@+id/webseal_username"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/textView2"
        android:layout_alignBottom="@+id/textView2"
        android:layout_marginLeft="20dp"
        android:layout_toRightOf="@+id/textView2"
        android:ems="10"
        android:hint="username" >

        <requestFocus />
    </EditText>

    <EditText
        android:id="@+id/webseal_password"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/access_token_in_settings"
        android:layout_alignLeft="@+id/webseal_username"
        android:ems="10"
        android:inputType="textPassword" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/textView1"
        android:layout_marginLeft="30dp"
        android:layout_marginTop="52dp"
        android:text="@string/Username"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView2"
        android:layout_alignParentTop="true"
        android:layout_marginTop="43dp"
        android:text="@string/WebSEALLogin"
        android:textSize="@dimen/title_text_size" />

    <TextView
        android:id="@+id/access_token_in_settings"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView2"
        android:layout_below="@+id/webseal_username"
        android:layout_marginTop="35dp"
        android:text="@string/Password"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <Button
        android:id="@+id/webseal_login"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/webseal_password"
        android:layout_marginRight="18dp"
        android:layout_marginTop="37dp"
        android:text="@string/Login"
        android:onClick="webSEALButtonPressed"
         />

</RelativeLayout>


<WebView 
    android:id="@+id/webView1"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

</WebView>

 </LinearLayout>

мой журнал:

05-26 14: 46: 21.070: E /AndroidRuntime(29717): ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: основной 05-26 14:46:21.070: E/AndroidRuntime(29717): java.lang.NullPointerException 05-26 14:46:21.070: Е /AndroidRuntime(29717):
на com.example.ui.WebViewActivity$1.onPageFinished(WebViewActivity.java:120) 05-26 14:46:21.070: E/AndroidRuntime(29717):
на android.webkit.CallbackProxy.handleMessage(CallbackProxy.java:416) 05-26 14:46:21.070: E/AndroidRuntime(29717):
на android.os.Handler.dispatchMessage(Handler.java:99) 05-26 14:46:21.070: E/AndroidRuntime(29717):
на android.os.Looper.loop (Looper.java:176) 05-26 14: 46: 21.070: E /AndroidRuntime(29717):
atroid.app.ActivityThread.main(ActivityThread.java:5419) 05–26 14: 46: 21.070: E /AndroidRuntime(29717):
at java.lang.reflect.Method.invokeNative (собственный метод) 05-26 14: 46: 21.070: E /AndroidRuntime(29717):
at java.lang.reflect.Method.invoke (Method.java:525) 05-26 14: 46: 21.070: E /AndroidRuntime(29717):
в com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046) 05-26 14:46:21.070: E/AndroidRuntime(29717):
в com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862) 05-26 14:46:21.070: E/AndroidRuntime(29717):
в dalvik.system.NativeStart.main(собственный метод)

0 ответов

Другие вопросы по тегам