이것은 아마도 어리석은 일이지만 비 활동 클래스 밖에서 메소드를 호출하는 하나의 활동 클래스가 있습니다. 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;}
}
}
"모두 true를 반환하고 false 조건을 반환합니다."- 매우 드문 경우입니다 ... –
하하 어떻게 가능합니까? D. 오타가 있거나 뭔가 보이지 않습니다. – DArkO
대신 거기에 삼항 연산을 시도하십시오. 두 경로가 맞지 않는 이유는 알 수 없습니다. – Spidy