android中的Java线程回调

android中的Java线程回调,java,android,callback,Java,Android,Callback,不管什么原因,我都无法让我的回拨正常工作。基本上,我将使用我创建的tcp服务器进行群聊。我试图用java创建一个线程,然后使用回调将从套接字获得的信息提供给主活动 我当前收到的错误: 12-04 02:53:05.969 15143-15169/com.AndroidBabble E/AndroidRuntime﹕ FATAL EXCEPTION: Thread-4340 java.lang.RuntimeException: Can't create handler inside threa

不管什么原因,我都无法让我的回拨正常工作。基本上,我将使用我创建的tcp服务器进行群聊。我试图用java创建一个线程,然后使用回调将从套接字获得的信息提供给主活动

我当前收到的错误:

12-04 02:53:05.969  15143-15169/com.AndroidBabble E/AndroidRuntime﹕ FATAL EXCEPTION: Thread-4340
java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
但我不确定如何执行looper.prepare,当我执行时,它似乎不起作用-因此我想知道如何在我的代码上下文中实现looper.prepare

这是我的密码:

public interface ResponseEvent {
  public void responseEvent();
}    
主要

客户任务

最后,我希望通过响应事件传递一个字符串,它将在主事件中获得它

 public void responseEvent(){
    Toast.makeText(getBaseContext(), "Trig", Toast.LENGTH_LONG).show();
  }

在线程的上下文中调用responseEvent。但是Toast必须由UI线程处理。由于responseEvent是在活动中定义的,您可以使用RunNuithRead在UI线程队列中发布Runnable,

解释了如何使用回调接口,我认为这对您来说可能是一个有趣的读物。

您可以使用Looper从后台线程到UI线程进行通信。。试试这个:

public void responseEvent(){
    // Defines a Handler object that's attached to the UI thread
    new Handler(Looper.getMainLooper()).post(new Runnable() {
        @Override
        public void run() {
            Toast.makeText(getBaseContext(), "Trig", Toast.LENGTH_LONG).show();
        }
    });
}

使用Java接口作为回调将是一个很好的开始。我已经阅读了这篇文章,在我的代码中实现的大部分代码也出现在您链接的帖子中。。。
 public void responseEvent(){
    Toast.makeText(getBaseContext(), "Trig", Toast.LENGTH_LONG).show();
  }
public void responseEvent(){
    // Defines a Handler object that's attached to the UI thread
    new Handler(Looper.getMainLooper()).post(new Runnable() {
        @Override
        public void run() {
            Toast.makeText(getBaseContext(), "Trig", Toast.LENGTH_LONG).show();
        }
    });
}