zoukankan      html  css  js  c++  java
  • Android Bundle类

    https://blog.csdn.net/randyjiawenjie/article/details/6651437

    今天发现自己连Bundle类都没有搞清楚,于是花时间研究了一下。

    根据google官方的文档(http://developer.android.com/reference/android/os/Bundle.html)

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

    类继承关系:

    java.lang.Object
         android.os.Bundle

    Bundle类是一个final类:
    public final class
    Bundle
    extends Objectimplements Parcelable Cloneable

    两个activity之间的通讯可以通过bundle类来实现,做法就是:

    (1)新建一个bundle类

    Bundle mBundle = new Bundle();
    (2)bundle类中加入数据(key -value的形式,另一个activity里面取数据的时候,就要用到key,找出对应的value)
    mBundle.putString("Data", "data from TestBundle");

    (3)新建一个intent对象,并将该bundle加入这个intent对象
    Intent intent = new Intent();
    intent.setClass(TestBundle.this, Target.class);
    intent.putExtras(mBundle);
    完整代码如下:
    android mainfest.xml如下:

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.tencent.test"
    android:versionCode="1"
    android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
    <activity android:name=".TestBundle"
    android:label="@string/app_name">
    <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    </activity>
    <activity android:name=".Target"></activity>
    </application>
    <uses-sdk android:minSdkVersion="7" />
    </manifest>

    两个类如下:intent从TestBundle类发起,到Target类。
    类1:TestBundle类:

    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;

    public class TestBundle extends Activity {

    private Button button1;
    private OnClickListener cl;
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    button1 = (Button) findViewById(R.id.button1);
    cl = new OnClickListener(){
    @Override
    public void onClick(View arg0) {
    // TODO Auto-generated method stub
    Intent intent = new Intent();
    intent.setClass(TestBundle.this, Target.class);
    Bundle mBundle = new Bundle();
    mBundle.putString("Data", "data from TestBundle");//压入数据
    intent.putExtras(mBundle);
    startActivity(intent);
    }
    };
    button1.setOnClickListener(cl);
    }
    }

    类2: Target
    import android.app.Activity;
    import android.os.Bundle;

    public class Target extends Activity{

    public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.target);
    Bundle bundle = getIntent().getExtras(); //得到传过来的bundle
    String data = bundle.getString("Data");//读出数据
    setTitle(data);

    }
    }

    布局文件:
    main.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/hello"
    />
    <Button
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/button"
    android:id = "@+id/button1"
    />
    </LinearLayout>


    target.xml
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/target"
    />
    </LinearLayout>

    String.xml

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
    <string name="hello">Hello World, TestBundle!</string>
    <string name="app_name">测试Bundle用法</string>
    <string name="button">点击跳转</string>
    <string name="target">来到target activity</string>
    </resources>

    ————————————————
    版权声明:本文为CSDN博主「randyjiawenjie」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/randyjiawenjie/java/article/details/6651437

    Always Believe Something Beauitful Will Be Happen
  • 相关阅读:
    Eclipse / android studio 添加第三方jar包 步骤
    Android checkbox 自定义点击效果
    Android 程序打包和安装过程
    Android 基础
    (转)Genymotion安装virtual device的“unable to create virtual device, Server returned Http status code 0”的解决方法
    (转)eclipse 导入Android 项目 步骤
    微信开放平台注册 步骤
    Android Studio 初级安装
    数组
    作用域问题代码
  • 原文地址:https://www.cnblogs.com/Oude/p/12783200.html
Copyright © 2011-2022 走看看