android教学Intent实现activity之间的跳转

显示跳转

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);
}


























































  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值