登录按钮单击我正在执行活动的互联网连接检查。但是可见性不适用于布局。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sign_in);
bar = (ProgressBar) this.findViewById(R.id.progressBar);
linearlayout = (LinearLayout) findViewById(R.id.SignInLinearLayout);
signin = (Button) findViewById(R.id.btn_signin);
user_name = (EditText) findViewById(R.id.Txt_Signin_Email);
user_password = (EditText) findViewById(R.id.Txt_signIn_Password);
signin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
linearlayout.setVisibility(View.GONE);
bar.setVisibility(View.VISIBLE);
if (CommonFunctions.hasActiveInternetConnection(getBaseContext())) {
params = new ArrayList<NameValuePair>(2);
params.add(new BasicNameValuePair("username", user_name.getText().toString()));
params.add(new BasicNameValuePair("password", user_password.getText().toString()));
// Calling async task to get json
new GetLogIn_Details().execute();
} else {
bar.setVisibility(View.GONE);
linearlayout.setVisibility(View.VISIBLE);
Toast.makeText(getApplicationContext(), "Network Not Available... \n Please check Your Wifi Connection or Mobile Network", Toast.LENGTH_LONG).show();
}
}
}
);
}
这是网络检查代码
public abstract class CommonFunctions {
private static String LOG_TAG = "Network Message";
public static boolean hasActiveInternetConnection(Context context) {
if (isNetworkAvailable(context)) {
try {
Boolean aResultM = isOnline();
return aResultM;
} catch (Exception ex) {
ex.printStackTrace();
}
} else {
Log.d(LOG_TAG, "No network available!");
}
return false;
}
public static boolean isNetworkAvailable(Context _context) {
ConnectivityManager cm = (ConnectivityManager) _context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = cm.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isConnected()) {
return true;
}
return false;
}
public static Boolean isOnline() {
try {
Process p1 = java.lang.Runtime.getRuntime().exec("ping -c 1 www.google.com");
int returnVal = p1.waitFor();
boolean reachable = (returnVal==0);
return reachable;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return false;
}
}
可见性不起作用。但是,如果我从点击事件中删除网络检查代码,则可见性正常。我该如何解决这个问题。我发现了一些提示,比如使用延迟方法。但我不想使用延迟或计时器方法。因为网络检查方法本身需要一些时间来执行。