intent理解

来源:互联网 发布:php添加自定义菜单 编辑:程序博客网 时间:2024/06/04 20:13

什么是intent

andriod中有三大组件,为了方便不用组件之间的联系,应用程序就采用以一种统一的方式启动了组件及传递信息,就是使用intent。

intent有分为显示intent和隐式intent,intent可以实现activity之间的跳转,之间的传递数据等之类。intent一般用来启动活动,启动服务,以

及发送广播等场景。目前所介绍的是启动活动



使用显示intent

我们用intent从一个activity中启动另一个,代码示例:

 setContentView(R.layout.activity_main);//给当前活动引入一个布局        //在活动中使用Toast        Button button1=(Button)findViewById(R.id.button_1);        button1.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                Toast.makeText(MainActivity.this,"您已经完成这项任务", Toast.LENGTH_SHORT).                      show();                Intent intent=new Intent(MainActivity.this,Main2Activity.class);                startActivity(intent);            }        });
intent中含有多个构造函数重载,其中intent中要接收两个参数,第一个参数是context要求启动的上下文(一般情况下当前活动),而第二个

参数class是我们要启动的目标活动,在activity类中提供了一个startActivity方法来启动activity,这个方法专门启动活动,并且接收一个来自conten

的参数。


隐式intent的用法


通过在<activity>标签下配置<intent-filter>的内容,可以指定当前活动能够响应的action和category,打开AndroidManifest.xml,添加代码

<activity android:name=".SecondActivity" ><intent-filter><action android:name="com.example.activitytest.ACTION_START" /><category android:name="android.intent.category.DEFAULT" /></intent-filter></activity>
然后再Mainactivity中,添加

button1.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent("com.example.activitytest.ACTION_START");startActivity(intent);}});
同样在构造函数中讲action的name属性传进去,表示要启动这个action,每个intent只能制定一个action



更多的隐式用法

button1.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent(Intent.ACTION_VIEW);intent.setData(Uri.parse("http://www.baidu.com"));startActivity(intent);}});
这里我们首先指定了 Intent 的 action 是 Intent.ACTION_VIEW,这是一个 Android 系统内置的动作,其常值为 android.intent.action.VIEW。
后通过 Uri.parse()方法,将一个网址字符串解析成一个 Uri 对象, 再调用 Intent的 setData()方法将这个 Uri 对象传递进去。

我们也可以(ˇˍˇ) 向下一个activity传递数据,第一个activity的代码为

setContentView(R.layout.activity_main);         String mString;          mEditText = (EditText)findViewById(R.id.editText);        Button button1=(Button) findViewById(R.id.button_1);        button1.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                //String user="传递字符串到第二个活动";                String mString=mEditText.getText().toString();                Intent intent=new Intent(MainActivity.this,Main2Activity.class);                intent.putExtra("mEditText",mString);                startActivity(intent);            }        });

第二个activity的代码为

setContentView(R.layout.activity_main2);        Intent intent=getIntent();        String mString=intent.getStringExtra("mEditText");        TextView textView=(TextView) findViewById(R.id.textView4);        textView.setText(mString);

理解:我们在第一个Mainactivity中设置一个输入框,在里面输入字符串,并点击Button实现跳转。在第一个Mainactivity中用intent.putExtra保存

输入框中输入的字符串,其中里面有两个参数,第一个参数是取得这个putExtra的按键,第二个参数是输入框中输入的内容,启动startActivity方法,

跳转到第二个activity。Intent intent=getIntent();  获得传过来的intent,并且用intent.getStringExtra方法获得按钮,再将其输入到textview中。



0 0
原创粉丝点击