使用toast android显示消息

时间:2013-04-26 13:08:18

标签: android toast

我正在尝试在连接处理程序类

中实现toast
public class server implements Runnable {
private static final String TAG = "myLogs";
.....
public void run()
{
.....
while (true) {
    try {

       client = server.accept();
        // here i want to show message, when client is connected
         Toast.makeText(getApplicationContext(), "msg msg", Toast.LENGTH_SHORT).show();
          Log.d(TAG, "client connected....");

但我在makeText和getApplicationContext()上遇到错误; 他们有下划线..

6 个答案:

答案 0 :(得分:1)

您无法在runnable中获取getApplicationContext(),只能在活动或服务中获取。 要在可运行的应用程序上下文中,您应该将活动的上下文传递给runnable。

但在您的情况下,您希望在活动上下文中显示祝酒词。为此,传递活动对象并调用runOnUIThread方法。将您的活动作为toast的上下文:

public class Server implements Runnable {
private static final String TAG = "myLogs";
private Activity myActivity;

  public Server(final Activity activity) {
    this.myActivity = activity;
  }

.....
public void run()
{
.....
while (true) {
    try {

       client = server.accept();
        // here i want to show message, when client is connected
        myActivity.runOnUiThread(new Runnable() {
          public void run() {
            Toast.makeText(myActivity, "msg msg", Toast.LENGTH_SHORT).show();
            Log.d(TAG, "client connected....");    
          }
       });

这里也有描述: Android: Toast in a thread

答案 1 :(得分:0)

参见解释here

也许您应该使用构造函数或其他东西传递Activity上下文,但是您不能使用applicationcontext来烘烤。

答案 2 :(得分:0)

我认为你的getApplicationContext()方法可能返回NULL。我想这是因为你正在从一个线程运行toast,这将脱离UI线程。

您需要从应用程序中具有UI上下文的某个位置调用此方法(意味着系统可以获取UI线程的句柄 - 或者需要显示Toast的位置)。

尝试在创建Toast之前获取应用程序上下文(可能使用此语法):

Context ctx =getApplicationContext();

然后,在尝试显示吐司之前确保它不是NULL。

如果它实际上是NULL,则需要传递上下文(在具有上下文的地方使用该方法,并将其作为参数传递给您的线程)

答案 3 :(得分:0)

使用classname.this肯定有效

答案 4 :(得分:0)

首先检查你是否正确导入(我认为它是导入android.widget.Toast;或者你可以使用import android.widget。*;来确定)。然后尝试使用它而不是getApplicationContext()或activityname.this。

答案 5 :(得分:0)

试试这个。

上下文上下文; context = this;

Toast.makeText(context,“msg msg”,Toast.LENGTH_SHORT).show();

Toast.makeText(ClassName.this,“msg msg”,Toast.LENGTH_SHORT).show();

Toast.makeText(this.getApplicationContext(),“msg msg”,Toast.LENGTH_SHORT).show();