Android基础类之Bundle

Bundle类是一个key-value对,“A mapping from String values to various Parcelable types.”

1. 声明Bundle对象实例,压入键值对,并传递对象实例:

  /**
     * Indicate that the connection was lost and notify the UI Activity.
     */
    private void connectionLost() {
        // Send a failure message back to the Activity
        Message msg = mHandler.obtainMessage(BluetoothChat.MESSAGE_TOAST);
        Bundle bundle = new Bundle();
        bundle.putString(BluetoothChat.TOAST, "Device connection was lost");
        msg.setData(bundle);
        mHandler.sendMessage(msg);

        // Start the service over to restart listening mode
        BluetoothChatService.this.start();
    }

2. 获取并解析Bundle对象实例:

  // The Handler that gets information back from the BluetoothChatService
    private final Handler mHandler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            switch (msg.what) {
            case MESSAGE_STATE_CHANGE:
                if(D) Log.i(TAG, "MESSAGE_STATE_CHANGE: " + msg.arg1);
                switch (msg.arg1) {
                case BluetoothChatService.STATE_CONNECTED:
                    setStatus(getString(R.string.title_connected_to, mConnectedDeviceName));
                    mConversationArrayAdapter.clear();
                    break;
                case BluetoothChatService.STATE_CONNECTING:
                    setStatus(R.string.title_connecting);
                    break;
                case BluetoothChatService.STATE_LISTEN:
                case BluetoothChatService.STATE_NONE:
                    setStatus(R.string.title_not_connected);
                    break;
                }
                break;
            case MESSAGE_WRITE:
                byte[] writeBuf = (byte[]) msg.obj;
                // construct a string from the buffer
                String writeMessage = new String(writeBuf);
                mConversationArrayAdapter.add("Me:  " + writeMessage);
                break;
            case MESSAGE_READ:
                byte[] readBuf = (byte[]) msg.obj;
                // construct a string from the valid bytes in the buffer
                String readMessage = new String(readBuf, 0, msg.arg1);
                mConversationArrayAdapter.add(mConnectedDeviceName+":  " + readMessage);
                break;
            case MESSAGE_DEVICE_NAME:
                // save the connected device‘s name
                mConnectedDeviceName = msg.getData().getString(DEVICE_NAME);
                Toast.makeText(getApplicationContext(), "Connected to "
                               + mConnectedDeviceName, Toast.LENGTH_SHORT).show();
                break;
            case MESSAGE_TOAST:
                Toast.makeText(getApplicationContext(), msg.getData().getString(TOAST),
                               Toast.LENGTH_SHORT).show();
                break;
            }
        }
    };
时间: 2024-10-14 20:32:57

Android基础类之Bundle的相关文章

Android之使用Bundle进行IPC

一.Bundle进行IPC介绍 四大组件中的三大组件(Activity.Service.Receiver)都是支持在Intent中传递Bundle数据的,由于Bundle实现了Parcelable接口,所以它可以方便地在不同的进程之间传输.当然,传输的数据必须能够被序列化,比如基本类型.实现了Parcelable接口的对象.实现了Serializable接口的对象以及一些Android支持的特殊对象,具体内容可以看Bundle这个类,就可以看到所有它支持的类型.Bundle不支持的类型无法通过它

Android 完美解决bundle实现页面跳转并保留之前数据+传值

前言:昨天碰到了一个问题,我想实现页面跳转,采用了Bundle之后,再回到原来的页面,发现数据也没有了,而且一直报错,网上查找了很多资料,发现要用一个startActivityForResult(),然而好景不长,我又想在后面的页面把后面页面的数据和前面传过来的数据都传递给中间页面的数据,这样挺起来有些复杂,我简单写了一个Demo 1.首先是3个Activity=====对应3个布局=====全部贴出来好了,一看就懂的. 对应Main3Activity <?xml version="1.0

Android 消息传递之Bundle的使用——实现object对象传输(二)

上面学习了线程通过Massage发送字符串消息,Handler接收字符串消息,这样的形式来更新ui,接下来,一起分享怎么把一个对象利用消息机制发送出去,让主线程接收来更新ui. 下面就利用一个服务Server,Handler,Activity,和一个对象类分享具体实现情况. 首先创建一个个类,什么都行.例如: 1 package dfrz.me.android.pcfileshare.bean; 2 3 import java.io.Serializable; 4 5 /** 6 * 描述:广告

Android 消息传递之Bundle的使用——实现object对象传输(一)

UI更新--消息处理massage 对于安卓内部消息得处理,实现对界面UI得更新操作,不能在线程中直接更新ui.至于为什么不能,在学习安卓开发的时候,在线程中操作会使程序崩溃. 为什么,可以看看诸多大神们的详细介绍. 安卓内部处理数据更新UI都是耗时的操作,这些耗时操作系统不允许在Activity主线程中进行,必须在其他线程中操作,然后通过发消息的形式通知主线程更新UI,那么我们就要用多线程处理了,massage 消息处理机制. 下面我们一起分享郭霖Android多线程中消息处理更新UI的介绍.

android传递数据bundle封装传递map对象

android开发默认情况下,通过Bundle bundle=new Bundle();传递值是不能直接传递map对象的,解决办法: 第一步:封装自己的map,实现序列化即可 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 /**  * 序列化map供Bundle传递map使用  * Created  on 13-12-9.  */ public class SerializableMap implements Serializable {     privat

Android基础类之BaseAdapter

BaseAdapter就Android应用程序中经常用到的基础数据适配器,它的主要用途是将一组数据传到像ListView.Spinner.Gallery及GridView等UI显示组件,它是继承自接口类Adapter, 1.Adapter类简介 1).Adapter相关类结构如下图所示: 自定义Adapter子类,就需要实现上面几个方法,其中最重要的是getView()方法,它是将获取数据后的View组件返回,如ListView中每一行里的TextView.Gallery中的每个ImageVie

Android Studio+ADT Bundle + SDK only

配置android开发环境,有以下几种方式: 一.Android Studio:android自己开发的集IDE.SDK于一体的,集成开发环境,装了就能建项目.目前还属于beta版. 二.ADT Bundle:也是集eclipse和adt和sdk和模拟器等等于一体 Eclipse + ADT plugin Android SDK Tools Android Platform-tools A version of the Android platform A version of the Andr

Android学习笔记——Bundle

该工程的功能是实现不同线程之间数据的传递 以下代码是MainActivity.java中的代码 package com.example.bundle; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.HandlerThread; import android.os.Looper; import android.os.Message; import

android开发之Bundle使用

android开发中,我们经常需要在两个activity之间传递数据,最常用的莫过于使用intent.putXXX(),可是很多时候我们也会这样: Bundle bundle = new Bundle(); bundle.putXXX()... 这两种传值方式很像,今天查看intent.putXXX()方法源代码,发现是这样的: /** * Add extended data to the intent. The name must include a package * prefix, for