Android中Message传递参数

来源:互联网 发布:c语言进制转换代码 编辑:程序博客网 时间:2024/06/05 16:43

最近发现Message,发送消息可以传递参数,这个思路很好,所以写了一个例子,点击屏幕,给Activity发送一个消息,传递两个参数,并把这个activity销毁掉!

程序打开界面:

 

点击屏幕,销毁activity弹出Toast:

 

看代码:

MainActivity。java类:

package com.cn.Android;  
  
import android.app.Activity;  
import android.os.Bundle;  
import android.os.Handler;  
import android.os.Message;  
import android.widget.Toast;  
  
public class MainActivity extends Activity {  
  
    final static int CANSHU = 1;  
      
    public Handler mHandler=new Handler(){  
        public void handleMessage(Message msg) {  
        switch(msg.what){  
            case CANSHU :   String str1 = msg.getData().getString("text1");//接受msg传递过来的参数   
                    String str2 = msg.getData().getString("text2");//接受msg传递过来的参数   
                    initFinishMainActivity(str1, str2);  
                              break;  
            default         : break;  
            }  
        }     
    };  
      
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        InitMainActivity();  
    }  
      
    public void InitMainActivity()  
    {  
        setContentView(new MainActivityView(this,this));  
    }  
      
    public void initFinishMainActivity(String str1, String str2)  
    {  
        Toast.makeText(MainActivity.this, str1+str2, Toast.LENGTH_LONG).show();  
        finish();  
    }  

MainActivityView。java类:

package com.cn.android;  
  
import android.content.Context;  
import android.graphics.Bitmap;  
import android.graphics.BitmapFactory;  
import android.graphics.Canvas;  
import android.graphics.Rect;  
import android.os.Bundle;  
import android.os.Message;  
import android.view.MotionEvent;  
import android.view.View;  
  
public class MainActivityView extends View{  
  
    private MainActivity activity;  
    private Context context;  
    private Bitmap m_Bitmap;  
      
    public MainActivityView(Context context, MainActivity activity) {  
        super(context);  
        this.activity = activity;  
        this.context = context;  
        initBitmap();  
    }  
      
    public void initBitmap()  
    {  
        m_Bitmap = BitmapFactory.decodeResource(this.getResources(),R.drawable.bg);  
    }  
  
    @Override  
    public void onDraw(Canvas canvas) {  
        canvas.drawBitmap(m_Bitmap, 0, 0, null);  
          
    }  
  
    @Override  
    public boolean onTouchEvent(MotionEvent event) {  
        int x = (int) event.getX();  
        int y = (int) event.getY();  
        Rect rect;  
        rect = new Rect(0,0,320,480);  
          
        if(rect.contains(x,y))  
        {  
            Message msg = new Message();  
            msg.what = MainActivity.CANSHU;  
            Bundle bundle = new Bundle();    
                      bundle.putString("text1","大明的消息传递参数的例子!");  //往Bundle中存放数据   
                         bundle.putString("text2","Time:2011-09-05");  //往Bundle中put数据   
                         msg.setData(bundle);//mes利用Bundle传递数据   
                         activity.mHandler.sendMessage(msg);//用activity中的handler发送消息   
        }  
          
        return super.onTouchEvent(event);  
    }  
      
      

本篇文章来源于 Linux公社网站(www.linuxidc.com)  原文链接:http://www.linuxidc.com/Linux/2011-09/42481.htm