Как проверить, возникает ли ошибка соединения с помощью оператора if - PullRequest
0 голосов
/ 22 октября 2018

Итак, у меня есть кнопка, которая отправляет сообщение на сервер, когда я нажимаю его.Тем не менее, я хочу убедиться, что если есть исключение ConnectionException, кнопка не будет щелкать и будет возвращать тост.

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 ]

0 голосов
/ 22 октября 2018

попробуйте сначала

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();
         }
     }
}
0 голосов
/ 22 октября 2018

Нажатие кнопок происходит в потоке пользовательского интерфейса , основном потоке, в то время как взаимодействие с сервером происходит в потоке IO , неосновном потоке.Вам нужна модель, которая сообщит вам, если произошла ошибка, а затем отобразит ваше сообщение об ошибке.

Одним из возможных решений является использование AsyncTask

0 голосов
/ 22 октября 2018

оберните ваш код с попыткой поймать оценку.например.

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
    }
}
0 голосов
/ 22 октября 2018

В этом случае вы должны использовать оператор try-catch.

try
{
     //statements that may cause an exception
}
catch (exception(type) e(object))‏
{
     //error handling code
}
...