0

我正在尝试创建一个线程并使用 Hander 来显示 Toast 消息。

当我运行程序时,模拟器什么都不显示!

我对线程完全陌生。

请帮我解决这个问题:)

package com.example.android_thread_hu;

import android.os.Bundle;
import android.os.Handler;
import android.app.Activity;
import android.view.Menu;
import android.widget.Toast;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_main);
        thread.start();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);    
        return true;
    }

    Thread thread = new Thread(new Runnable() { 
        @Override
        public void run() { 
            handler.handleMessage(null) ;
       } 
    });

    public Handler handler = new Handler(){    
        public void handleMessage() {
            Toast.makeText(
                    MainActivity.this,
                    "finish!!!!",
                    Toast.LENGTH_SHORT).show();
        }
    };
}
4

2 回答 2

1

尝试像这样声明你的线程:

Thread thread = new Thread(new Runnable() { 
    @Override
    public void run() { 
        handler.sendEmptyMessage() ;
   } 
});

另外,请确保Toast.LENGTH_SHORT不要太短并且消息褪色太快

于 2013-03-06T02:51:37.320 回答
0

我认为线程太复杂了

package com.example.android_thread_hu;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.view.Menu;
import android.widget.Toast;

public class MainActivity extends Activity {

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main);
    thread.start();
  }

  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);

    return true;
  }
  Thread thread=new Thread(new Runnable() 
                             { Message message;
    String obj="run";
    @Override
    public void run() 
    { 
      message = handler.obtainMessage(1,obj);
      handler.sendMessage(message);
    } 
  });

  public Handler handler = new Handler(){ 
    @Override
    public void handleMessage(Message msg) {
      super.handleMessage(msg);
      String MsgString = (String)msg.obj;
      if (MsgString.equals("run"))
      {
        //do something

        Toast.makeText(MainActivity.this,"finish!!!!",Toast.LENGTH_SHORT).show();


      }

    }
  };
} 
于 2013-03-06T03:01:22.110 回答