java我是否在异步任务中实现警报对话框?
我正在尝试显示登录类中是否存在internet连接。还有另一个connection manager类,如果没有internet连接,该类将显示一个警报对话框,但我对在何处实现代码感到困惑,因为登录类(尝试登录)中还有一个异步任务。有人能告诉我在何处放置代码以及我在何处出错吗
public class LoginActivity extends Activity implements OnClickListener {
// flag for Internet connection status
Boolean isInternetPresent = false;
// Connection detector class
ConnectionDetector cd;
EditText username, password;
Button login;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
// creating connection detector class instance
cd = new ConnectionDetector(getApplicationContext());
/**
* Check Internet status button click event
* */
username = (EditText) findViewById(R.id.username_et);
password = (EditText) findViewById(R.id.password_et);
login = (Button) findViewById(R.id.login_bt);
login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// get Internet status
isInternetPresent = cd.isConnectingToInternet();
// check for Internet status
if (isInternetPresent) {
// Internet Connection is Present
// make HTTP requests
showAlertDialog(LoginActivity.this, "Internet Connection",
"You have internet connection", true);
} else {
// Internet connection is not present
// Ask user to connect to Internet
showAlertDialog(LoginActivity.this, "No Internet Connection",
"You don't have internet connection.", false);
}
String name = username.getText().toString();
String pass = password.getText().toString();
new AttemptLogin().execute(name, pass);
}
public void showAlertDialog(Context context, String title, String message, Boolean status) {
AlertDialog alertDialog = new AlertDialog.Builder(context).create();
// Setting Dialog Title
alertDialog.setTitle(title);
// Setting Dialog Message
alertDialog.setMessage(message);
// Setting alert dialog icon
alertDialog.setIcon((status) ? R.drawable.success : R.drawable.fail);
// Setting OK Button
alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
});
// Showing Alert Message
alertDialog.show();
}
});
}
private class AttemptLogin extends
AsyncTask<String, Integer, String> {
int success;
String message = " ", _username, _password;
@Override
protected String doInBackground(String... args) {
_username = args[0];
_password = args[1];
try {
Map<String, String> params = new HashMap<String, String>();
params.put("tag", "login");
params.put("username", _username);
params.put("password", _password);
HttpUtility.sendPostRequest(params);
String response = HttpUtility.readRespone();
JSONObject jObj = null;
try {
jObj = new JSONObject(response);
success = jObj.getInt("success");
message = jObj.getString("message");
} catch (JSONException e) {
Log.e("JSON Parser", "Error parsing data" + e.toString());
}
} catch (IOException ex) {
ex.printStackTrace();
}
HttpUtility.disconnect();
return message;
}
protected void onPostExecute(String status) {
if (status != null) {
Toast.makeText(getBaseContext(), status, Toast.LENGTH_LONG).show();
if (success == 1) {
SharedPreference.store(getApplicationContext(), _username, _password);
startActivity(new Intent(getBaseContext(), DashboardActivity.class));
}
}
}
}
}
# 1 楼答案
使用此类检查internet连接
然后
使用this ASyncTask进行登录尝试
# 2 楼答案
我在您的代码中做了一些评论,以帮助您澄清应该在哪里执行有问题的逻辑
回答您的问题:您不会从异步任务创建警报对话框。流程如下:
如果你有任何问题,请告诉我