活动–Activity–Intent

活动–Activity–Intent

一个应用程序可以包括多个活动
活动的基本用法
(1)手动创建活动

(2)创建和加载布局

(3)注册活动

(4)隐藏标题栏

(5)活动中使用Toast(土司,界面提示)

(6)活动中使用Menu(菜单)

(7)如何销毁一个活动?
只要按一下Back键就可以销毁当前的活动了
如果不想通过按键的方式,而通过代码来实现的话,Activity类提供了一个finsh()方法,在活动中自己调用一下
这个方法就可以销毁当前活动了。

使用Intent在活动之间穿梭

Intent的作用?
Intent是Android程序中各组件之间进行交互的一种重要方式
它不仅可以指明当前组件想要执行的动作,还可以在不同的组件之间传递数据。
Intent一般可用于启动活动,启动服务,以及发送广播的场景

  1. 显示使用Intent
    //第一个参数类型:活动上下文 Context packageContext,
    //第二个参数类型:需要启动的活动的类名对应的类型,Class<?>cls

    Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
    startActivity(intent)
    
  2. 使用隐式Intent
    在需要被启动的活动注册时通过指定明确的action和category,然后由系统去分析这个Intent,
    比如:

(1)需要被启动的活动在AndroidManifest.xml中声明活动启动的入口条件

<intent-filter>
    <action android:name="com.example.activityTest.ACTION_START">
	<category android:name="android.intent.category.DEFAULT">
</intent-filter>	

(2)只有调用者代码中指定的Intent内容 和 需要被启动活动指定的 和 内容同时能够匹配上,
需要被启动的活动才能响应该Intent。

Intent intent = new Intent("com.example.activityTest.ACTION_START");//此处如果不指定category,就是使用默认category.DEFAULT
intent.addCategory("com.example.activityTest.MY_CATEGORY")
startActivity(intent)

【注意】:一个Intent中只能指定一具action,但可以指定多个category,比如:

intent.addCategory("com.example.activityTest.MY_CATEGORY")
  1. 隐式的Intent其它作用
    使用隐式的intent不仅可以启动自己程序内的活动,还可以启动其它程序的活动,这样可以达到
    Android多个应用程序之间功能共享的效果

(1) 调用第三方应用
比如我们的应用中需要打开一个网页,此时我们自己不需要去实现浏览器的功能,而可以直接调用系统浏览器应用的能力
Intent intent = new Intent(Intent.ACTION_VIEW); //Intent.ACTION_VIEW是Android系统内置的动作,就是打开浏览器
intent.setData(Uri.parse(“http://www.baidu.com”));//将网址字符串解析成一个Uri对象传进去

调用系统的拔号功能

Intent intent = new Intent(Intent.ACTION_DIAL); //Intent.ACTION_DIAL是Android系统内置的动作
intent.setData(Uri.parse(“tel:10086”));

(2) 向下一个活动传递数据
Intent中提供了一系列putExtra()重载的方法,可以把我们想要传递的数据暂存在Intent中,启动了另一个活动后,
只需要把这些数据再从Intent中取出就可以了。
比如:
在第一个活动中

Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
intent.putExtra("Key_extra_data", "Hello secondActivity!");
startActivity(intent);

在第二个活动中

Intent intent = getIntent(); //获取调用者的Intent,即第一个活动传过来的Intent
String data = intent.getStringExtra("Key_extra_data");
Log.d("SecondActivity", data);

(3) 返回数据到上一个活动
启动活动时调用 startActivityForResult() 方法
比如:
步骤1:在第一个活动中
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
startActivityForResult(intent,1); //第二个参数:请求码(保持唯一值就可以),用于后续返回数据时判断是否是想要的返回码

步骤2:在第二个活动中
Intent intent = new Intent();
intent.putExtra(“Key_data_return”, “Hello FirstActivity!”);
setResult(Result_OK, intent); //参数1:返回码,表示成功或失败的处理结果, 参数2:返回的数据,放在Intent中
finsh();

步骤3:在第一个活动中
在被调的第二个活动被 销毁之后 会回调上一个活动的onActivityResult()方法,需要我们在第一个活动中重写这个方法

@override
protect void onActivityResult(int requestCode, int resultCode, Intent data){
	switch(requestCode){ //对应启动活动时的请求码
		case 1:
		     if (resultCode == Result_OK) {//resultCode 活动处理结果
				String returnData = data.getStringExtra("data_return");
				Log.d("FirstActivity", returnData);
			 }
			 break;
		default:
	}
}

注意: 如果用户是通过按下Back键回到第一个活动的话,就不能用上面的方法接收返回结果了
此时,需要在第二个活动中重写 onBackPressed()方法来向上一个活动返回结果

@override
public void onBackPressed() {
	Intent intent = new Intent();
	intent.putExtra("Key_data_return", "Hello FirstActivity!");
	setResult(Result_OK, intent);  //参数1:返回码,表示成功或失败的处理结果, 参数2:返回的数据,放在Intent中
	finsh();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值