什么是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() {
@Override
public void onClick(View v) {
Intent intent = new Intent("com.example.activitytest.ACTION_START");
startActivity(intent);
}
});
同样在构造函数中讲action的name属性传进去,表示要启动这个action,每个intent只能制定一个action
更多的隐式用法
button1.setOnClickListener(new OnClickListener() {
@Override
public 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中。