2013-03-06 1 views
0

Я пытаюсь создать Thread и использовать 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(); 
     } 
    }; 
} 
+0

Какова цель использования «Thread» таким образом, помимо явно показанного «Toast», который можно сделать намного проще? – codeMagic

ответ

1

Пытаться объявить нить как:

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

Кроме того, убедитесь, что Toast.LENGTH_SHORT не слишком мало, а сообщение исчезает слишком быстро

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(); 


     } 

    } 
    }; 
}