1

所以我有一个按钮,当我按下它时,它会向服务器发送消息。但是,我想确保如果有 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();
     }
}

我只是想知道如何实现这一点?

4

4 回答 4

2

按钮点击发生在UI 线程(主线程)上,而服务器通信发生在IO 线程(非主线程)上。您需要有一个模型来告诉您是否发生了错误,然后显示您的错误消息。

一种可能的解决方案是使用AsyncTask

于 2018-10-22T15:38:54.710 回答
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
    }
}
于 2018-10-22T15:44:47.687 回答
0

在这种情况下,您应该使用 try-catch 语句。

try
{
     //statements that may cause an exception
}
catch (exception(type) e(object))‏
{
     //error handling code
}
于 2018-10-22T15:35:49.167 回答
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();
         }
     }
}
于 2018-10-22T16:47:50.427 回答