Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Android中检查Internet连接时出错_Java_Android_Webview - Fatal编程技术网

Java 在Android中检查Internet连接时出错

Java 在Android中检查Internet连接时出错,java,android,webview,Java,Android,Webview,其想法是,当没有可用的internet连接时,向用户显示我的自定义对话框,这表明没有连接。否则,当页面在WebView中加载时,显示一个ProgressDialog以显示页面正在加载,并在加载完成时关闭。当有互联网连接时,这段代码可以工作,但如果没有,它就会崩溃,我也找不到错误所在 package com.tariknotebook; import android.app.Activity; import android.app.Dialog; import android.app.Progr

其想法是,当没有可用的internet连接时,向用户显示我的自定义对话框,这表明没有连接。否则,当页面在WebView中加载时,显示一个ProgressDialog以显示页面正在加载,并在加载完成时关闭。当有互联网连接时,这段代码可以工作,但如果没有,它就会崩溃,我也找不到错误所在

package com.tariknotebook;

import android.app.Activity;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.graphics.Bitmap;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;

public class NoteBook extends Activity {
    /** Called when the activity is first created. */
    WebView web;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        web = (WebView) findViewById(R.id.browserMine);
        web.setWebViewClient(new HelloWebViewClient());
        web.getSettings().setJavaScriptEnabled(true);
    }

    @Override
    protected void onStart() {
        // TODO Auto-generated method stub
        super.onStart();
        web.loadUrl("http://m.seslisozluk.com");
    }

    ProgressDialog dialog;
    Dialog connDialog;

    @Override
    protected Dialog onCreateDialog(int id) {

        switch(id)
        {
        case 1:
            dialog = ProgressDialog.show(NoteBook.this, "Loading",
            "Loading.. Please wait.");

            break;
        case 2:
                connDialog = new Dialog(getApplicationContext());
                connDialog.setContentView(R.layout.connection);
                connDialog.setTitle("No Internet Connection");

                Button closeButton = (Button) findViewById(R.id.closeButton);
                closeButton.setOnClickListener(new closeButtonOnClickListener());
                connDialog.show();
            break;
        }


        return super.onCreateDialog(id);
    }

    private class closeButtonOnClickListener implements OnClickListener
    {
        public void onClick(View v) {
            connDialog.dismiss();
        };
    }

    private class HelloWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }
        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            // TODO Auto-generated method stub
            super.onPageStarted(view, url, favicon);
                ConnectivityManager conStatus = (ConnectivityManager) view.getContext().getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
                if(conStatus.getActiveNetworkInfo().isConnected() && conStatus.getActiveNetworkInfo() != null)
                    showDialog(1);
                else
                    showDialog(2);
        }

        @Override
        public void onPageFinished(WebView view, String url) {
            // TODO Auto-generated method stub
            super.onPageFinished(view, url);
            dialog.dismiss();

        }

    }
}
这也是错误日志:


当您发布错误消息时,您应该告诉我们源代码的哪一行对应

通过将代码粘贴到文本编辑器中,我认为第83行是:


if(conStatus.getActiveNetworkInfo().isConnected()&&conStatus.getActiveNetworkInfo()!=null)

这强烈表明conStatus为null,您正试图调用一个不存在对象的方法


你应该先检查它是否为非空。

我的直觉告诉我,如果你启动时没有internet连接(因为它无法连接到网站以获取favicon),那么
favicon
OnPageStarted()
中将为空,但我对此不确定。我想,当您尝试调用其方法时,
conStatus
也可能是空的。您是否尝试过在调试器中单步执行此操作?