Вопрос

Я использую внешний пакет, определяющий соединитель. Идея состоит в том, что соединитель может отправлять сообщения JSON на удаленный сервер с помощью метода SendMessage и получать сообщения через слушателя, вызывая OnMessageCeedived. В моей реализации устройство получает каждое сообщение, которое оно отправляет, призывая, таким образом, OnMessageCeedived. Тем не менее, в моем коде я включил в свой класс активности объект ChatClient, который должен вызвать метод Show_message. Show_message запускает тост. Когда я звоню Show_message из Onjoin, нет никаких проблем, но когда это называется из OnMessageSive, ничего не появляется, тогда как мой отладчик говорит мне, что приложение действительно получает сообщение, и что вспомогательное, запускаемое. В то же время, вызов Show_message в методе Onjoin действительно работает. И я не вижу никакой разницы между ними обоими. У тебя есть решение ?

Большое спасибо

public class HelloWorldJunctionActivity extends Activity {
     onCreate(...){...} [...]
private class ChatClient extends JunctionActor {
      public ChatClient() {
        super("client");
      }
      public void onActivityJoin() {
          show_message("Connected");
      }
      @Override
      public void onMessageReceived(MessageHeader header, JSONObject msg) { 
          try { 
            show_message(msg.getString("text"));
        } catch (JSONException e) {
            // TODO Auto-generated catch block
            show_message(e.getMessage());
        }
      }
}
void show_message(String message) {
      Toast
        .makeText(HelloWorldJunctionActivity.this, message, Toast.LENGTH_SHORT)
        .show();
  }
}
Это было полезно?

Решение

Я не уверен, как работает JunctionActor, но возможно ли, что обратный вызов OnMessageReceived вызывает из потока, который не является потоком пользовательского интерфейса? Если это так, вам, возможно, придется использовать обработчик, как объяснено в эта почта.

Другие советы

Причина, по которой он не поджарится, заключается в том, что контекст объект helloworldjunctionActivity. Это не существует. Попробуйте также отправить объект контекста

void show_message (строковое сообщение, контекст con) {toast .maketext (con, сообщение, toast.length_short) .show (); }}

show_message ("connected", getApplicationContext ());

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top