2011-06-13 4 views
0

이것은 아마도 어리석은 일이지만 비 활동 클래스 밖에서 메소드를 호출하는 하나의 활동 클래스가 있습니다. Eclipse 디버거에서이 단계를 수행하면 netinfo 객체를 평가하는 if 조건에서 true를 반환하고 false를 반환하고 netInfo.isConnected()가 true로 평가되고 null이 아니더라도 isOnline 메서드는 FALSE를 반환합니다. 호출 클래스의 if 조건에서 값을 얻었을 때 디버거에서 검사 할 때 "JDI 스레드 평가에 문제가 발생했습니다." 그리고 그것은 사실로 평가됩니다, 그래서 나는 성공 메시지를 얻습니다. 왜이 동작을보고 isConnected 메서드의 결과를 제대로 평가할 수 있습니까? 디버깅 할 때디버거에서 두 블록을 실행하는 조건 인 경우

Calling Main Activity Class: 

import android.app.Activity; 
import android.os.Bundle; 
import android.util.Log; 


public class Splash extends Activity { 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.splash); 

    Connection.context = this; 

    // Check Internet Connection 
    if (!Connection.isOnline()) 
    { 
     //throw some message 
     Log.d("Test","Fail!"); 

    } 
    else 
    { 
     //state something good. 
     Log.d("Test","Success!"); 

    } 


Called Non Activity Class 

import android.content.Context; 
import android.net.ConnectivityManager; 
import android.net.NetworkInfo; 
public class Connection { 

public static Context context; 

// Check Internet Connection 



public static boolean isOnline() {  




     ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);  
     NetworkInfo netInfo = cm.getActiveNetworkInfo();  
     if (netInfo != null && netInfo.isConnected()) 
      {return true;} 
     else 
      {return false;} 

} 

}

+1

"모두 true를 반환하고 false 조건을 반환합니다."- 매우 드문 경우입니다 ... –

+0

하하 어떻게 가능합니까? D. 오타가 있거나 뭔가 보이지 않습니다. – DArkO

+0

대신 거기에 삼항 연산을 시도하십시오. 두 경로가 맞지 않는 이유는 알 수 없습니다. – Spidy

답변

2

때때로, 나는 또한 이상한 반환 장소에가는 현재 명령어의 이상한 행동을 얻는다.
그래서 내가 isOnline 함수에 의해 반환 된 값을 알 수있는 가장 좋은 방법은 결과 자체를 기록하는 것입니다;

boolean online = netInfo != null && netInfo.isConnected(); 
Log.d("test", "online returning " + online); 
return online; 
관련 문제