Activity跳转和传参数

来源:互联网 发布:隔声计算软件 编辑:程序博客网 时间:2024/05/01 00:00
Activity

ActivityAndroid的四大组件之一,是应用程序加载布局的容器。(控制中心)

处理用户的响应

意图激活组件1显示意图激活

已经明确指定了组件名称的激活方式:显式意图激活

// 跳转(激活另一组件:使用Intent

// 得到意图对象

Intent intent = new Intent();

// 5种方法都可以

// 参数:上下文,要激活的对象.class

1>intent.setClass(this, OtherActivity.class);

// 参数:上下文,要激活的Activity类全名

2>intent.setClassName(this,"com.cym.preparation.activity.OtherActivity");

// 参数:ComponentName对象 里面参数:上下文,要激活的对象.class

3>intent.setComponent(newComponentName(this,OtherActivity.class));

// intent的构造参数:上下文,要激活的对象.class

4>Intent intent = new Intent(this,OtherActivity.class);

// 跨应用激活组件 参数:自己的全包名,要激活的Activity类全名

5>intent.setClassName("com.cym.preparation.activity","com.cym.preparation.activity.OtherActivity");

// 设置完成之后开启Activity即可

startActivity(intent);

2隐示意图激活

没有指定组件名称:隐式意图激活。Android系统会根据隐式意图中设置的动作(action)类别(category)数据(uri和数据类别)找到最合适的组件来处理意图

AndroidManifest.xml

<activity .......> 这是你要激活的Activity

Activity最小的intent-filter的配置是这样

必须有一个action 和一个缺省的类别

<intent-filter>

<action android:name=”com.cym.NewActivity”> // name 参数自定义的

<category  android:name=”android.intent.category.DEFAULT”> // 类别有很多常量可以选择

// 还可以配置(不要求一定配置,但是可以配置)

<data android:scheme="hehe"/> // scheme 自定义

<data android:scheme="haha" android:mimeType="hehe/haha"/> // mimeType 要有“自定义/自定义” 这样的格式  一定要有 “/

</intent-filter>

</activity>

Activity:

Intent intent = new Intent();

intent.setAction(“com.cym.NewActivity”) // 填写你自己在你需要激活的Activity配置 acton name 即可 这样就是通过自己定义的名称激活另一个Activity

一个Activity可以配置多个<intent-filter></intent filer>,如果有多个的话intent-filter,通过任意一个都能激活该Activity

如果配置了datascheme属性激活该Activity就一定要配置

intent.setData(Uri.parse("haha:")); // 参数 配置文件scheme 的值 如 haha : 内容后面要加分号

如果配置了datamimetype属性激活该Activity就一定要配置

intent.setType("hehe/haha");

如果同时配置了data 的 scheme 和 mimetype 属性就一定要配置

intent.setDataAndType(Uri.parse("haha:"), "hehe/haha"); // 以上两种data单个配置的方法无效

activity之间参数的传递1单个值的之间参数的传递

// 1赋值 Activity1

Intent intent = new Intent(this,OtherActivity.class);

// 把数据塞进intent

// 单个传值

intent.putExtra("name", "邹胖子");

intent.putExtra("age", 18);、

startActivity(intent);

// 取值 Activity2

Intent intent = getIntent();

// 单个取值

ntent.getStringExtra("name") + ":" + intent.getIntExtra("age", 0)

------------------------------------------------------------------------------------

// 2批量传值  Activity1

  Bundle bundle =        new Bundle();

  bundle.putString("name", "Cym");

  bundle.putInt("age", 18);

  intent.putExtras(bundle);

startActivity(intent);

// 批量取值 Activity2   用以上单个取值方式也可以

Intent intent = getIntent();

Bundle bundle = intent.getExtras();

bundle.getString("name") + ":" + bundle.getInt("age")

2对象之间参数的传递

// 1将实体实现Serializable (序列化) :public class student implements Serializable

//1对象传值;Activity1

student stu = new student("FFF",11);

intent.putExtra("stu", stu);  // 参数:需要传一个 Serializable 的类

//2 对象取值Activity2

Intent intent = getIntent();

student stu = (student) intent.getSerializableExtra("stu");

String name = stu.name;

int age = stu.age;

-------------------------------------------------------------------

/ 1将实体实现Parcelable (包装类)

Domain

public int id;

public String name;

public int age;

@Override

        public int describeContents() {

                // TODO Auto-generated method stub

                return 0;

        }

        //把对象的属性保存在Parcel对象里面

        @Override

        public void writeToParcel(Parcel dest, int flags) {

                // TODO Auto-generated method stub

        dest.writeInt(id);

        dest.writeString(name);

        dest.writeInt(age);

        }

public static final Parcelable.Creator<Student> CREATOR = new Parcelable.Creator<Student>() {

               

                //Parcel对象里面获取属性,在构造出对象

                public Student createFromParcel(Parcel in) {

// 获取属性顺序要按属性保存顺序

                        int id = in.readInt();

                        String name = in.readString();

                        int age= in.readInt();

                        return new Student(id,name,age);

                }

                public Student[] newArray(int size) {

                        return new Student[size];

                }

        };

//2对象传值 Activity1

             person p = new person("Cym", 20);

            intent.putExtra("person", p);

// 对象取值 Activity2

person person = (person) intent.getParcelableExtra("person");

        tv_show.setText(person.name + "-" + person.age);


0 0
原创粉丝点击