显示跳转
Intent intent = new Intent();
intent.setClass(this, SecondActivity.class);
当前activity的上下文环境, 跳转到的activity的上下文环境。
startActivity(intent);
activity之间的隐式跳转 以及数据的传递
清单文件里面的注册:
<activity android:name="com.itheima40.activitydemo.ui.SecondActivity" >
<intent-filter>
<action android:name="com.itheima40.second" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="money"/>
<data android:mimeType="com.itheima40/mbx" />
</intent-filter>
</activity>
public void click2(View v) {
Intent intent = new Intent();
intent.setAction("com.itheima40.second");
intent.addCategory("android.intent.category.DEFAULT");
intent.setType("com.itheima40/mbx");
intent.setData(Uri.parse("money:10块钱"));
intent.setDataAndType(Uri.parse("money:10块钱"), "com.itheima40/mbx");
startActivity(intent);
}
通过我们的action实现跳转 以及通过intent实现我们的数据传递。
// 取数据
Intent intent = getIntent(); // 获取跳转前的那个意图对象
Uri uri = intent.getData();
System.out.println("我是第二个页面, 取到的数据: " + uri);
String type = intent.getType();
System.out.println("我是第二个页面, 取到的类型: " + type);
第二个activity实现我们的获得数据。
其他方式实现我们数据的传递:
常见数据类型的传递
intent.putExtra("name", "张三");
intent.putExtra("age", 28);
intent.putExtra("score", new float[]{80.5f, 95.9f, 100.00f});
String name = intent.getStringExtra("name");
int age = intent.getIntExtra("age", -1);
float[] scores = intent.getFloatArrayExtra("score");
for (float s : scores) {
System.out.println("成绩: " + s);
}
集合的传递
ArrayList<CharSequence> list = new ArrayList<CharSequence>();
list.add("功能1");
list.add("功能2");
list.add("功能3");
intent.putCharSequenceArrayListExtra("list", list);
ArrayList<CharSequence> listExtra = intent.getCharSequenceArrayListExtra("list");
for (CharSequence c : listExtra) {
System.out.println(c);
}
bundle数据传递
Bundle value = new Bundle();
value.putString("name", "王友军");
value.putInt("age", 35);
intent.putExtra("stu", value);
Bundle value = intent.getBundleExtra("stu");
String stuName = value.getString("name");
int stuAge = value.getInt("age");
System.out.println("姓名: " + stuName + ", 年龄: " + stuAge);
对象的传递:
Person p = new Person("张泽华", 29, "男");
intent.putExtra("person", p);
Person person = (Person) intent.getSerializableExtra("person");
注意 我们的这个类需要继承接口: Serializable
import java.io.Serializable;
public class Person implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private String name;
private int age;
private String sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Person() {
super();
// TODO Auto-generated constructor stub
}
public Person(String name, int age, String sex) {
super();
this.name = name;
this.age = age;
this.sex = sex;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + ", sex=" + sex + "]";
}
}
注意 :我们通过隐式跳转来实现我们的调用其他的应用
只要这个应用已经安装在了手机上面我们就可以实现在另外一个应用中开启这个应用。
/**
* 跳转到浏览器页面, 并且指定网址
* @param v
*/
public void jumpBrowser(View v) {
/*<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http" />
<data android:scheme="https" />
<data android:scheme="about" />
<data android:scheme="javascript" />
</intent-filter>*/
Intent intent = new Intent();
intent.setAction("android.intent.action.VIEW");
intent.addCategory("android.intent.category.BROWSABLE");
Uri uri = Uri.parse("http://www.itheima.com");
intent.setData(uri);
startActivity(intent);
}
/**
* 跳转到短信发送页面
* @param v
*/
public void jumpSms(View v) {
/*<intent-filter>
<action android:name="android.intent.action.VIEW" />
<action android:name="android.intent.action.SENDTO" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="sms" />
<data android:scheme="smsto" />
</intent-filter>*/
Intent intent = new Intent();
intent.setAction("android.intent.action.VIEW");
intent.addCategory("android.intent.category.BROWSABLE");
Uri uri = Uri.parse("sms:5556");
intent.setData(uri);
// 使用intent传递数据
intent.putExtra("sms_body", "今晚7天假日酒店旁边的肯德基不见不散!!!");
startActivity(intent);
}