Я создаю класс для проверки интернет-соединения, я получаю сообщение об ошибке ниже:
12-16 10:34:07.340: E/AndroidRuntime(1099):
java.lang.NullPointerException 12-16 10: 34: 07.340: E / AndroidRuntime (1099): на com.internetchecker.main.InternetCheckerActivity $ 1.onClick (InternetCheckerActivity.java:25) 12-16 10: 34: 07.340: E / AndroidRuntime (1099): на android.view.View.performClick (View.java:2485) 12-16 10: 34: 07.340: E / AndroidRuntime (1099): на android.view.View $ PerformClick.run (View.java:9080) 12-16 10: 34: 07.340: E / AndroidRuntime (1099):в android.os.Handler.handleCallback (Handler.java:587) 12-16 10: 34: 07.340: E / AndroidRuntime (1099): в android.os.Handler.dispatchMessage (Handler.java:92) 12-16 10: 34: 07.340: E / AndroidRuntime (1099): на android.os.Looper.loop (Looper.java:123) 12-16 10: 34: 07.340: E / AndroidRuntime (1099): на android.app.ActivityThread.main (ActivityThread.java:3683) 12-16 10: 34: 07.340: E / AndroidRuntime (1099): по адресу java.lang.reflect.Method.invokeNative (собственный метод) 12-16 10: 34: 07.340: E / AndroidRuntime (1099): в java.lang.reflect.Method.invoke (Method.java:507) 12-16 10: 34: 07.340: E / AndroidRuntime (1099): в com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:839) 12-16 10: 34: 07.340: E / AndroidRuntime (1099): на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:597) 12-16 10:34: 07.340: E / AndroidRuntime (1099): at dalvik.system.NativeStart.main (собственный метод)
Код моего класса приведен ниже:
public class CheckInternet2 {
private static Boolean status = true;
public static Boolean isConnected() {
Runnable runnable = new Runnable() {
public void run() {
// TODO Auto-generated method stub
isNetworkAvailable(h,2000);
}
};
runnable.run();
return status;
}
private static Handler h = new Handler() {
@Override
public void handleMessage(Message msg) {
if (msg.what != 1) { // code if not connected
status = false;
System.out.println("Status False");
} else { // code if connected
status = true;
System.out.println("Status True");
}
}
};
private static void isNetworkAvailable(final Handler handler, final int timeout) {
new Thread() {
private boolean responded = false;
@Override
public void run() {
new Thread() {
@Override
public void run() {
HttpGet requestForTest = new HttpGet("http://m.google.com");
try {
new DefaultHttpClient().execute(requestForTest); // can last...
responded = true;
} catch (Exception e) {}
}
}.start();
try {
int waited = 0;
while(!responded && (waited < timeout)) {
sleep(100);
if(!responded ) {
waited += 100;
}
}
}
catch(InterruptedException e) {} // do nothing
finally {
if (!responded) { handler.sendEmptyMessage(0);
}
else { handler.sendEmptyMessage(1);
}
}
}
}.start();
}
}
и яя называю это так:
btnCheckStatus.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if(CheckInternet2.isConnected())
{
Toast.makeText(getApplicationContext(), "Connected ", 0).show();
}
else
{
Toast.makeText(getApplicationContext(), "Not Connected ", 0).show();
}
}
});
Я не могу понять, почему это исключение.