因此,我有一个按钮,当我按该按钮时,它将消息发送到服务器。但是,我想确保如果有ConnectionException,则该按钮不会单击,并且将返回Toast。
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (v.getId() == R.id.button) {
//Send Message to Server
} else
Toast.makeText(getApplicationContext(), "Server hasn't connected", Toast.LENGTH_LONG).show();
}
}
我只是想知道如何实现?
答案 0 :(得分:2)
按钮单击发生在 UI线程(主线程)上,而服务器通信发生在 IO线程(非主线程)上。您需要一个模型来告诉您是否发生错误,然后显示错误消息。
一种可能的解决方案是使用AsyncTask
答案 1 :(得分:0)
在这种情况下,您应该使用try-catch语句。
try
{
//statements that may cause an exception
}
catch (exception(type) e(object))
{
//error handling code
}
答案 2 :(得分:0)
用try and catch语句包装代码。 例如。
button.setOnClickListener(new View.OnClickListener() {
@Override
try
{
public void onClick(View v) {
if (v.getId() == R.id.button) {
//Send Message to Server
} else
Toast.makeText(getApplicationContext(), "Server hasn't connected", Toast.LENGTH_LONG).show();
}
}
}
catch(exception (type) e)
{
//your custom message
}
}
答案 3 :(得分:0)
首先尝试
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try{
if (v.getId() == R.id.button) {
//Send Message to Server
}else {
throw new serverExceptionerror ("Server hasn't connected");
}
}
catch (serverExceptionerror ex) {
Toast.makeText(ex.getMessage(),Toast.LENGTH_LONG).show();
}
}
}