Android学习笔记•从零开始•第二天•Intent-穿梭在Activity之间

Android学习笔记•从零开始•第二天•Intent-穿梭在Activity之间

转载请注明出处:CLeopard http://blog.csdn.net/cleopard

通过第一天的基本知识学习,对Android有所熟悉,今天主要是对Intent的学习。
使用marddown编辑器,感觉还不错!
–>点击进入Android学习笔记导图 http://blog.csdn.net/cleopard/article/details/44037813
–>19本Android经典教程+104个Github上火爆项目开源源码 http://download.csdn.net/album/detail/1511

1.显式Intent

测试在Button的onClick函数里写入:

        Intent intent = new Intent(First.this,Second.class);
        startActivity(intent);

通过startActivity方法,由FirstActivity转入SecondActivity。
如果想回到上一个Activity,按Back键。

2.隐式Intent

通过action和category,由系统辨认需要转向的Activity。
action和category属性在AndroidManifest.xml中的想要赋予的Activity标签里添加。
比如我们给SecondActivity添加action和category

        <activity android:name=”.SecondActivity”>
            <intent-filter>
                <action android:name=”com.cleopard.activitytest.ACTION_START”>
                <category android:name=”android.intent.category.DEFAULT”>
            intent-filter>
        activity>

可以查看下启动Activity(主Activity)的intent-filer标签。
在onClick中使用:

        Intent intent = new Intent(“com.cleopard.activitytest.ACTION_START”);
        startActivity(intent);

Category属性中android.intent.category.DEFAULT是默认属性,使用时不用写上。
每个Intent中只能指定一个action,但是却能指定多个category;可以调用Intent中的addCategory()方法添加一个category(需要在AndroidManifest中添加)。

3.通过Intent启动其他应用(浏览器)

    Intent intent =new Intent(Intent.ACTION_VIEW);//其常量值为android.intent.action.VIEW
    Intent.setData(Uri.parse(“http://cleopard.download.csdn.net”));
    startActivity(intent);

首先给Intent指定了内置的动作Intent.ACTION_VIEW,然后通过Uri.Parse()方法解析网址,使用setData()传递对象。

4.Intent-fliter中的data属性

精确指定当前活动响应什么类型的数据。
例如activity具有浏览功能的data属性:

<data android:scheme=”http” />

则点击打开网址时,会提示使用谁登录。
Android学习笔记•从零开始•第二天•Intent-穿梭在Activity之间_第1张图片
geo:地理位置。tel:拨打电话。等等。。例如:

        Intent intent = new Intent(Intent.ACTION_DIAL);
        intent.setData(Uri.parse(“tel:10086”));
        startActivity(intent);

5.Intent间传递数据—FirstActivity数据传入到SecondActivity

通过putExtra()方法。

第一个activity放入data:

        String data=”Hello,CLeopard!”;
        Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
        intent.putExtra(“extra_data”,data);
        startActivity(intent);

第二个activity取出data:

        Intent intent=getIntent();
        String data=intent.getStringExtra(“extra_data”);

由于传入的是String所以使用getStringExtra(),其他类推。

6.Intent间传递数据—SecondActivity返回数据到FirstActivity

使用startActivityForResult()方法。

1)FirstActivity中:

        Intent intent=new Intent(FirstActivity.this,SecondActivity.class);
        startActivityForResult(intent,1);

*1 表示辨别,接收返回数据会用到

2)SecondActivity中写在关闭按钮事件里,既返回:

            Intent intent = new Intent();
            Intent.putExtra(“data_return”,”Hello,CLeopard!”);
            setResult(RESULT_OK,intent);//重要,向上一活动返回数据;一般只用RESULT_OK和RESULT_CANCELED两个值
            finish();//关闭

3)FirstActivity中重写onActivityResult()方法:

            @Override
            protected void onActivityResult(int requestCode,int resultCode,Intent data){
                switch(requestCode)
                case 1:
                    If(resultCode==RESULT_OK){
                        String returnedData=data.getStringExtra(“data_return”);
                    }
                    break;
                default:
                }
            }

共有三个参数,对照上面的内容。

4)当然也可以写到返回事件里,重写onBackPressed()方法:

            @Override
            public void onBackPressed(){
                //…上面按钮事件代码
            }
今天到此结束 2015/03/09 13:50 CLeopard
转载请注明出处:CLeopard http://blog.csdn.net/cleopard

你可能感兴趣的:(Android)