Intent与Activity之间的传递

来源:互联网 发布:淘宝店如何复制到微店 编辑:程序博客网 时间:2024/05/23 17:17
1. Activity的理解:
1).活动:四大应用组件之一
2).作用:提供能让用户操作并与之交互的界面
3).组件的特点:
1,它的类必须实现特定的接口或继承特定类
2,需要在配置文件中配置其全类名
3,他的对象不是通过new出来的而是系统自动创建的
4,他的对象具有一定的生命周期,他的类中有对应的生命周期回调方法
4).那些地方用到反射(Android):
a.配置文本中配置全类名
b.布局文件中
c.显示意图Intent(Context context,Class c)

2.Intent的理解:
1).意图:信使(Activity,Service,BroadcastReceiver三个组件间通信的信使);
2).分类:
a.显示:操作当前应用自己的组件
b.隐士:操作其他应用自己的组件

3.Intent的使用:
1).创建:
a.显示:Intent(Context context, Class activityClass)
b.隐士:Intent(String action)//与Activity与<intent-filter>的action匹配
2).携带数据
a.额外:putExtra(String key,Xxx value)内部用map容器保存
b.有特定前缀:setData(Uri data)//tel:1234,smsto:1234
3).读取数据
a.额外:Xxx getXxxExtra(String key)
b.有特定前缀:Uri getData()

4.Activity的使用:
1).定义:
a.定义一个类extends Activity,并重写生命周期方法
b.在功能清单文件中使用<activity>注册
2).启动
a.一般启动:startActivity(Intent)
b.带回调的启动:startActivityForResoult(Intent intent intrequestCode),重写:onActivityResult(int requestCode,int resultCode, Intent data)
3).结束
a.一般:finish();
b.带结果的:setResult(int resultCode ,Intent data)

5.Activity的生命周期
1).Activity界面的状态
a.运行状态:可见也可操作
b.暂停状态:可见但不可操作
c.停止状态:不可见但对象存在
d.死亡状态: 对象不存在

6.具体实例:

Activity1:
    linnerlayout:
        1 输入框EditText
        没输入数据之前有灰色的提示;
        2 button1 一般启动
        3 button2 带回调的启动
    实现Activity的功能
        1.定义所有要操作的视图对象并初始化
        2.给视图设置监听
        3.在回调方法中实现逻辑

Activity2:
    linnerlayout:
        1 输入框EditText
        2 button 一般返回
        3 button 带结果的启动

实现一般启动
    1,定义好第二个界面
        1,布局
        2,定义Activity
        3,配置
        4,重写onCreate方法并加载布局
    2,启动界面2
        1firstActivity:
            1,创建Intent对象(显式)
            2, 通过Intent携带额外数据
            3,启动Activity

        SecondActivity:
            4,得到Intent对象
            5,通过INTENT对象读取额外数据
            6,显示到EdiText
    实现一般返回:
        SecondActivity:
            1,在显示第二个页面的时候,第一个页面其实还在只是被覆盖掉而已
            2,设置监听,关闭当前页面;在布局设置监听Activity里面重写方法,finish()当前页面;

实现带回调的启动:
    1,与一般启动一样,不同之处在于startActivityForResult();
        1,设置一个请求码
    2,要用到回调方法onActivityResult(),并重写这个方法;
        1,先判断
            1,得到结果
            2,显示结果
实现带结果的返回:
    1,在布局里设置监听,讲监听方法写出来
    2,从文本编辑框中保存数据
        1,setResult((int)resultCode,(intent)data);
        2, 设置一个结果码
        3,new一个Intent对象作为结果的载体
        4,得到数据
        5,传送数据
    3,关闭当前界面

FirstActivity:
 @Override
    public void onClick(View v) {
        if(v == bt_main_01){

//            Toast.makeText(this,"一般启动",0).show();
//            1,创建Intent对象(显式)

            Intent intent = newIntent(this,SecondActivity.class);

//            2, 通过Intent携带额外数据
            String message = et_main.getText().toString();
           intent.putExtra("MESSAGE",message);

//            3,启动Activity
            startActivity(intent);

        }else if(v == bt_main_02) {
//            Toast.makeText(this,"带回调的启动",0).show();

//          1,创建Intent对象(显式)
            Intent intent = newIntent(this,SecondActivity.class);


//            2, 通过Intent携带额外数据
            String message = et_main.getText().toString();
           intent.putExtra("MESSAGE",message);
            int requestCode = 2;

//            3,启动Activity,带回调的启动
            startActivityForResult(intent,requestCode);
        }
    }

    @Override
    protected void onActivityResult(intrequestCode, int resultCode, Intent data) {
        //判断
        if(requestCode== 2 && resultCode == 3){
            //取出数据
            String result = data.getStringExtra("RESULT");
            //显示出来
            et_main.setText(result);
        }
    }


SecondActivity:

//        4,得到Intent对象
        Intent intent =getIntent();

//        5,通过INTENT对象读取额外数据
        String message =intent.getStringExtra("MESSAGE");

//        6,显示到EdiText
       et_second.setText(message);

    }
    public void back1(View v){ //有没有参数是不一样的,如果没有参数的话会半崩溃

        finish();
    }

    public void back2(View v){
        //保存结果
        int resultCode =3;
        Intent data = new Intent();
        String result =et_second.getText().toString();
       data.putExtra("RESULT",result);
        setResult(resultCode , data);
        finish();
    }












































原创粉丝点击