gpt4 book ai didi

android - 运行线程类方法中的 sendBroadcast 编译错误,Android

转载 作者:搜寻专家 更新时间:2023-11-01 09:01:39 27 4
gpt4 key购买 nike

我怎样才能摆脱编译错误?

sendBroadcast(intent);

此方法在我制作的另一个应用程序中运行良好,但在当前应用程序中存在编译错误。红色下划线有错误消息“未定义新的 Runnable 类型”

sendBroadcast() 是 Context 类的一部分,而不是 Intent 类。

  public class Server {  // external class

public class ServerThread implements Runnable { // nested class

public void run() {
try {
if (SERVERIP != null) {
handler.post(new Runnable() {
@Override
public void run() {
serverStatus = "Listening on IP: " + SERVERIP;
}
});
serverSocket = new ServerSocket(SERVERPORT);
while (true) {
// listen for incoming clients
Socket client = serverSocket.accept();
handler.post(new Runnable() {
@Override
public void run() {
Intent intent = new Intent();
intent.setAction("com.example.AudioPlay");
intent.putExtra("serverStatus","Connected");
sendBroadcast(intent);
}
});

<<<< 编辑 >>>>

我把问题的重点改成了编译错误。该方法在其他应用程序中运行良好。正是在这种特殊情况下,我对编译错误感到困惑。

最佳答案

要访问未扩展 Activity、服务或其他应用程序组件的类中的 sendBroadcast 方法,您需要使用类构造函数将组件上下文传递给它:

public class ServerThread implements Runnable {  // nested class

Context context; //<< declare context here

public ServerThread(Context context){
this.context=context;
}
public void run() {

handler.post(new Runnable() {
@Override
public void run() {
Intent intent = new Intent();
intent.setAction("com.example.AudioPlay");
intent.putExtra("serverStatus","Connected");
// use context for calling sendBroadcast
context.sendBroadcast(intent);
}
});

并像从 Activity 中传递上下文一样:

ServerThread serverth=new ServerThread(Your_Current_Activity.this);

关于android - 运行线程类方法中的 sendBroadcast 编译错误,Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14681614/

27 4 0
文章推荐: java - 安卓电子邮件验证
文章推荐: c# - Unity 的自定义对象工厂扩展
文章推荐: c# - 当 T 未知时,如何使用反射执行 List.Cast