2013-06-19 3 views
0

Я работаю над связью в сети с Autobahn. В главном классе моего приложения я решил позвонить «connect()», когда пользователи нажимают кнопку.Android - сообщение об ошибке отправки сообщения Autobahn Websocket (NullPointerException)

// Toggle Button event 
    tButton = (ToggleButton) findViewById(R.id.toggleButton1);  
    tButton.setOnCheckedChangeListener(new OnCheckedChangeListener() { 

     @Override 
     public void onCheckedChanged(CompoundButton buttonView, 
       boolean isChecked) { 

      if(isChecked){ 

      }else{ 

      } 

     } 
    }); 

И после этого, есть MyOffers.class, и если этот класс доступен, класса MyOffers_Fragment производится четыре раза автоматически, потому что MyOffers.class содержит «вида карусели» и есть четыре продукта.

В классе 'MyOffers_Fragment', когда пользователи нажимают одно из изображений продуктов, следует отправить сообщение.

if (pos == 0) { 
    product_photo.setImageResource(R.drawable.myoffers_0); 
    product_photo.setOnClickListener(new ImageButton.OnClickListener(){ 
     public void onClick(View v){ 
      String id = "Product0"; 
      Log.d(TAG, "Current product is : " + id); 
      A.sendMessage(id); 
     } 
    }); 
} 

Но 'mConnection.sendTextMessage (id1);' эта строка делает ошибку «NullPointerException». Существует класс «Websocket_Connector.class»

public class WebSocket_Connector { 

    private static final String TAG = "ECHOCLIENT"; 
    public final WebSocketConnection mConnection = new WebSocketConnection(); 

    public void connect(final String wsuri) { 

      Log.d(TAG, "Connecting to: " + wsuri); 

      try { 
      mConnection.connect(wsuri, new WebSocketHandler() { 

       @Override 
       public void onOpen() { 
        Log.d(TAG, "Status: Connected to " + wsuri); 
        Log.d(TAG, "Connection successful!\n"); 
       } 

       @Override 
       public void onTextMessage(String payload) { 
        Log.d(TAG, "Got echo: " + payload); 
       } 

       @Override 
       public void onClose(int code, String reason) { 
        Log.d(TAG, "Connection closed."); 
       } 
      }); 
      } catch (WebSocketException e) { 

      Log.d(TAG, e.toString()); 
      } 

    public void sendMessage(String message) { 
     connect("ws://192.168.x.xxx:xxxx"); 
     mConnection.sendTextMessage(message); 
    } 

} 

я назвал «соединение()» в главном классе страницы, и после этого попытайтесь отправить сообщение. Но это не работает. Можете ли вы помочь мне?

+0

Где вы получаете NPE? – Blackbelt

+0

@blackbelt mConnection.sendTextMessage (id1); эта строка – user2500696

+0

WebSocketConnection - это ваш собственный класс? – Blackbelt

ответ

0
public class WebSocket_Connector { 

private static final String TAG = "ECHOCLIENT"; 
public final WebSocketConnection mConnection = new WebSocketConnection(); 
private String tmpString = ""; 
public void connect(final String wsuri) { 

     Log.d(TAG, "Connecting to: " + wsuri); 

     try { 
     mConnection.connect(wsuri, new WebSocketHandler() { 

      @Override 
      public void onOpen() { 
       Log.d(TAG, "Status: Connected to " + wsuri); 
       Log.d(TAG, "Connection successful!\n"); 
       mConnection.sendTextMessage(tmpString); 
       tmpString = ""; 
      } 

      @Override 
      public void onTextMessage(String payload) { 
       Log.d(TAG, "Got echo: " + payload); 
      } 

      @Override 
      public void onClose(int code, String reason) { 
       Log.d(TAG, "Connection closed."); 
      } 
     }); 
     } catch (WebSocketException e) { 

     Log.d(TAG, e.toString()); 
     } 

public void sendMessage(String message) { 

    if (mConnection.isConnected()) 
      mConnection.sendTextMessage(message); 
    else { 
     tmpString = message; 
     connect("ws://192.168.x.xxx:xxxx"); 
    } 

} 

} 
+0

Возможный обходной путь к вашей проблеме – Blackbelt

+0

изменил его и «частично» работал. Проблема в том, что он подключается к серверу каждый раз, когда я нажимал изображение. – user2500696

+0

Есть ли какой-либо метод, когда я подключаю сервер, а затем просто отправляю сообщение после этого ? – user2500696

Смежные вопросы