【发布时间】:2017-08-15 10:02:20
【问题描述】:
在模拟器中,关闭互联网连接时出现错误:
java.net.UnknownHostException: 无法解析主机“URL”; 没有与主机名关联的地址。
但我想显示一个 Toast 而不是在单击登录按钮时显示我的托管 URL 以防止任何安全问题。请帮忙:)
public class NewLoginActivity extends AppCompatActivity implements View.OnClickListener {
private EditText editTextUsername, editTextPassword;
private Button buttonLogin;
private ProgressDialog progressDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.new_login);
if (SharedPrefManager.getInstance(this).isLoggedIn()) {
finish();
startActivity(new Intent(this, AdminGMenuActivity.class));
return;
}
editTextUsername = (EditText)findViewById(R.id.editTextUsername);
editTextPassword = (EditText)findViewById(R.id.editTextPassword);
buttonLogin = (Button)findViewById(R.id.buttonLogin);
progressDialog = new ProgressDialog(this);
progressDialog.setMessage("Please wait...");
buttonLogin.setOnClickListener(this);
}
private void userLogin() {
final String username = editTextUsername.getText().toString().trim();
final String password = editTextPassword.getText().toString().trim();
progressDialog.show();
StringRequest stringRequest = new StringRequest(
Request.Method.POST,
Constants.URL_LOGIN,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
progressDialog.dismiss();
try {
JSONObject obj = new JSONObject(response);
if (!obj.getBoolean("error")) {
SharedPrefManager.getInstance(getApplicationContext())
.userLogin(
obj.getInt("id"),
obj.getString("username"),
obj.getString("email")
);
startActivity(new Intent(getApplicationContext(), AdminGMenuActivity.class));
finish();
}
else {
Toast.makeText(
getApplicationContext(),
obj.getString("message"),
Toast.LENGTH_LONG
).show();
}
}
catch (JSONException e) {
e.printStackTrace();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
progressDialog.dismiss();
Toast.makeText(
getApplicationContext(),
error.getMessage(),
Toast.LENGTH_LONG
).show();
}
}
) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> params = new HashMap<>();
params.put("username", username);
params.put("password", password);
return params;
}
};
RequestHandler.getInstance(this).addToRequestQueue(stringRequest);
}
@Override
public void onClick(View view) {
if (view == buttonLogin) {
userLogin();
}
}
}
【问题讨论】:
-
捕获抛出的异常,而不是打印它,让它显示
Toast? -
感谢您的回复,先生,您能提供一下代码吗?
-
try { //logging in code } catch (UnknownHostException uhe) { Toast.makeText(this, "Couldn't connect to server!", Toast.LENGTH_LONG).show(); } -
先生,我刚刚这样做了,但出现以下错误 - 无法解析方法 'makeText(anonymous com.android.volley.Response.Listener
, java.lang.String , int)' -
在你的
Toast.makeText(),而不是this写NewLoginActivity.this
标签: java android android-studio