2013-06-21 2 views
0

Мне нужно создать класс, который реализует серверный сокет, который ждет запроса на соединение от клиента (в данном случае веб-браузера). После этого я принял соединение, я хочу показать диалог с двумя кнопками для пользователя. Итак, на данный момент у меня есть класс, готовый к использованию для сокета сервера, и метод, который реализует диалоговое окно Alert. Как я могу использовать метод диалогового окна предупреждения внутри класса сокета сервера, чтобы показать сообщение с помощью двух кнопок? Вот класс сервера:Показать диалоговое окно оповещений, когда сокет сервера принимает соединение

UPDATE: я добавил код для создания Dialog оповещения после того, как сервер принял соединение

public class ServerThread extends AndroidApp2 implements Runnable { 
    public void run() { 
    try{ 
     if (SERVERIP != null){ 
      handler.post(new Runnable(){ 
       @Override 
       public void run(){ 
        serverStatus.setText("Listening on IP: " + ip_address_conversion + ":" + SERVERPORT);       
       } 
      }); 
      serverSocket = new ServerSocket(SERVERPORT); 
      while (true){ 
       Socket client = serverSocket.accept(); 
       handler.post(new Runnable(){ 
        @Override 
        public void run(){ 
         serverStatus.setText("Connected"); 
        } 
       }); 
       try{        
        AlertDialog.Builder connection_alert3 = new AlertDialog.Builder(this); 
          connection_alert3.setTitle("Connection Incoming"); 
          connection_alert3.setMessage("bla bla boa"); 
          connection_alert3.setCancelable(false); 
          connection_alert3.setPositiveButton("Yes", new DialogInterface.OnClickListener(){ 
           public void onClick(DialogInterface dialog, int id) { 

           } 
          }); 
          connection_alert3.setNegativeButton("No", new DialogInterface.OnClickListener(){ 
           public void onClick(DialogInterface dialog, int id){ 

           } 
          }); 
          AlertDialog alert = connection_alert3.create(); 
          alert.show(); 
       } catch (Exception e){ 
        handler.post(new Runnable() { 
         @Override 
         public void run() { 
          serverStatus.setText("Oops. Connection interrupted. Please reconnect your phones."); 
         } 
        }); 
        e.printStackTrace(); 
       } 
      } 
     }else{ 
      handler.post(new Runnable(){ 
       @Override 
       public void run(){ 
        serverStatus.setText("Couldn't detect internet connection."); } 
      }); 
     } 
    }catch (Exception e) { 
     handler.post(new Runnable(){ 
      @Override 
      public void run(){ 
       serverStatus.setText("Error"); 
      } 
     }); 
     e.printStackTrace(); 
    } 
    } 
} 

Благодарности

ответ

0
handler.post(new Runnable() { 
      @Override 
      public void run() { 
       // create the dialog here 
      } 
}); 

Это будет работать, если обработчик был создан в потоке ui, что, я думаю, так, потому что yo Ур использует его для установки текстов.

+0

Спасибо, это мне очень помогает и теперь работает правильно! – Hieicker

0
public void showDialog(Activity activity, String title, CharSequence message) 
{ 
AlertDialog.Builder builder = new AlertDialog.Builder(activity); 
if (title != null) 
builder.setTitle(title); 

builder.setMessage(message); 
builder.setPositiveButton("OK", null); 
builder.setNegativeButton("Cancel", null); 
builder.show(); 

}

+0

Спасибо за ответ. Я добавил свой метод в свой класс активности и исправил имя параметров. Поэтому я назвал этот метод внутри класса сокета сервера, но ничего не произошло ... Я что-то упустил? – Hieicker

+0

см. Это: http: //www.androidhive.info/2011/09/how-to-show-alert-dialog-in-android/ – KOTIOS

+0

@ Hieicker помогло? – KOTIOS