2025-05-17

 

最近發現Message,發送消息可以傳遞參數,這個思路很好,所以寫瞭一個例子,點擊屏幕,給Activity發送一個消息,傳遞兩個參數,並把這個activity銷毀掉!

轉載請標明出處:http://blog.csdn.net/wdaming1986/article/details/6748688 

 

程序打開界面:                                                 點擊屏幕,銷毀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(); 

    } 

      www.aiwalls.com

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

    } 

     

     

}   

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *