2016-05-15 8 views
0

こんにちは、私はAndroidのための簡単なチャットを開発しようとしている私は、Node.jsのサーバーとして使用しています、私が使用しているソケットライブラリは、これまでのところ私compile 'com.github.nkzawa:socket.io-client:0.4.0'動的ビュー

です接続を確立してイベントを発行したり聞いたりするイベントを実行していますが、問題があります。メソッドのイベントリスナーの1つを実行し、メッセージが表示されているフラグメントのインターフェイスを変更しようとしたときではなく、終了します。

イベントリスナ新しい投稿私は、次のコードをコメントし、唯一のログを送信する場合は

socket.on(EVENT_SEND_GET_MESSAGE, new Emitter.Listener(){ 
     @Override 
     public void call(Object... args) { 


      JSONObject Mensaje = (JSONObject) args[0]; 
      if (!Mensaje.equals("") && CONTENTCHAT != null){ 

       try { 
        if(Mensaje.getString("Remitente").equals("7")){ 

         CONTENTCHAT.addView(GenerarTextView(0, Mensaje.getString("Mensaje"))); 

        }else{ 

         CONTENTCHAT.addView(GenerarTextView(1, Mensaje.getString("Mensaje"))); 

        } 
        Log.i("RESPONSE", Mensaje.getString("Mensaje")); 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 
       //Log.i("RESPONSE", args[0].toString()); 
      } 
     } 
    }); 

、それがスムーズに実行されます。それは私が発信メッセージがスムーズに追加追加した場合、私はイベントがトリガされたときに実行しようとすると、それだけであるので、私はTextViewsを生成するとき、それは誤りではないことを知っている

private TextView GenerarTextView(int origen, String mensaje){//generar textview 


    TextView texto = new TextView(CONTEXTO); 

    if(origen == 0){ 

     texto.setBackgroundResource(R.color.accent_transparency_remitente); 
     texto.setGravity(Gravity.LEFT); 

    }else{ 
     texto.setBackgroundResource(R.color.accent_transparency_receptor); 
     texto.setGravity(Gravity.RIGHT); 
    } 

    texto.setTextColor(CONTEXTO.getResources().getColor(R.color.textBlack)); 
    texto.setPadding(30, 5, 30, 5); 
    texto.setTextSize(15); 
    texto.setText(mensaje); 

    return texto; 

} 

だGenerarTextView

CONTENTCHAT.addView(GenerarTextView(1, Mensaje.getString("Mensaje"))); 

機能。

ご協力いただきありがとうございます。コンソールで

このことのエラーショー

05-15 18:07:15.458 27843-28205/com.co.edu.cun.www1104379214.bienestarcun E/AndroidRuntime: FATAL EXCEPTION: EventThread 
                         java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare() 
                          at android.os.Handler.<init>(Handler.java:121) 
                          at android.widget.Toast$TN.<init>(Toast.java:322) 
                          at android.widget.Toast.<init>(Toast.java:91) 
                          at android.widget.Toast.makeText(Toast.java:238) 
                          at com.co.edu.cun.www1104379214.bienestarcun.Funciones.ChatPsicologiaManager.AddTextHistoryChat(ChatPsicologiaManager.java:140) 
                          at com.co.edu.cun.www1104379214.bienestarcun.Funciones.ChatPsicologiaManager.access$000(ChatPsicologiaManager.java:36) 
                          at com.co.edu.cun.www1104379214.bienestarcun.Funciones.ChatPsicologiaManager$1.call(ChatPsicologiaManager.java:90) 
                          at com.github.nkzawa.emitter.Emitter.emit(Emitter.java:117) 
                          at com.github.nkzawa.socketio.client.Socket.onevent(Socket.java:316) 
                          at com.github.nkzawa.socketio.client.Socket.onpacket(Socket.java:280) 
                          at com.github.nkzawa.socketio.client.Socket.access$100(Socket.java:18) 
                          at com.github.nkzawa.socketio.client.Socket$2$2.call(Socket.java:101) 
                          at com.github.nkzawa.emitter.Emitter.emit(Emitter.java:117) 
                          at com.github.nkzawa.socketio.client.Manager.ondecoded(Manager.java:379) 
                          at com.github.nkzawa.socketio.client.Manager.access$1300(Manager.java:20) 
                          at com.github.nkzawa.socketio.client.Manager$3.call(Manager.java:353) 
                          at com.github.nkzawa.emitter.Emitter.emit(Emitter.java:117) 
                          at com.github.nkzawa.socketio.parser.Parser$Decoder.add(Parser.java:156) 
                          at com.github.nkzawa.socketio.client.Manager.ondata(Manager.java:371) 
                          at com.github.nkzawa.socketio.client.Manager.access$1100(Manager.java:20) 
                          at com.github.nkzawa.socketio.client.Manager$2.call(Manager.java:344) 
                          at com.github.nkzawa.emitter.Emitter.emit(Emitter.java:117) 
                          at com.github.nkzawa.engineio.client.Socket.onPacket(Socket.java:485) 
                          at com.github.nkzawa.engineio.client.Socket.access$900(Socket.java:29) 
                          at com.github.nkzawa.engineio.client.Socket$5.call(Socket.java:288) 
                          at com.github.nkzawa.emitter.Emitter.emit(Emitter.java:117) 
                          at com.github.nkzawa.engineio.client.Transport.onPacket(Transport.java:121) 
                          at com.github.nkzawa.engineio.client.Transport.onData(Transport.java:113) 
                          at com.github.nkzawa.engineio.client.transports.WebSocket.access$100(WebSocket.java:19) 
                          at com.github.nkzawa.engineio.client.transports.WebSocket$1$3.run(WebSocket.java:74) 
                          at com.github.nkzawa.thread.EventThread$2.run(EventThread.java:75) 
                          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) 
                          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) 
                          at java.lang.Thread.run(Thread.java:856) 

答えて

1

あなたのコードでLooper.Loop()Looper.prepare()を追加しました

これはAsyncTaskのように動作しませんthis

+0

を参照してください?私は試してみる。 –

+0

こんにちは、私はそれを試して、それは働いた、ありがとう:) –

関連する問題