gpt4 book ai didi

android - 不显示 toast 消息 android

转载 作者:行者123 更新时间:2023-11-29 21:44:20 24 4
gpt4 key购买 nike

我想在收到来自客户端的数据时显示一条消息。我启动了一个服务器和一个客户端。客户端从服务器发送和接收确认,但在服务器端 android 上,没有显示任何消息,应用程序崩溃了,在这里我粘贴了我从 log cat 得到的内容。还有内部类,当我想显示消息时:

import android.widget.Toast;

class Handler implements Runnable {
private Context myContext;

private static final String TAG = "myLogs";

public Handler(Socket client) {
this.client = client;
}
public Handler(final Context context) {
this.myContext= context;
}

public void run() {
try {
//message received..

Toast.makeText(myContext.getApplicationContext(), "msg msg", Toast.LENGTH_SHORT).show();
Log.d(TAG, "received....");
} catch (IOException e) {
System.out.println("Errore: " + e);
}
}
}

逻辑猫

   04-29 17:21:53.679: D/My log(19533): waiting for connnections   
04-29 17:24:13.726: D/My Log(19533): Connected 04-29
17:24:14.859:W/dalvikvm(19533): threadid=9: thread exiting with uncaught exception (group=0x40018578) 04-29 17:24:14.859: E/AndroidRuntime(19533): FATAL EXCEPTION: Thread-10 04-29
17:24:14.859: E/AndroidRuntime(19533): java.lang.NullPointerException 04-29
17:24:14.859:E/AndroidRuntime(19533): at com.example.tcpserver.Handler.run(Handler.java:49) 04-29
17:24:14.859: E/AndroidRuntime(19533): at java.lang.Thread.run(Thread.java:1019)

最佳答案

您的代码有两处错误。首先,正如其他人所说,您是从一个非 ui 线程调用命令。尽管从您的代码中看不出来,但 logcat 表明您是从一个非 ui 线程调用它的。为了显示 Toast 消息,您需要确保从 UI 线程中调用 toast。

另一个问题是您正试图通过 Application 上下文显示 Toast。这将失败,因为应用程序上下文无法更新 UI。只需使用 Activity 上下文。

您创建 Toast 的调用应修改为如下所示:

myContext.runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(myContext, "msg msg", Toast.LENGTH_SHORT).show();
}
});

关于android - 不显示 toast 消息 android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16281408/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com