title: Android基础01
date: 2020-02-15 17:17:04
tags:

1、Intent

Intent可以让活动进行跳转。使用方式有两种,一种是显式,另一种是隐式。

1、显示调用

Intent intent = new Intent(FirstActivity.this, SecondActivity.class); startActivity(intent);

我们首先构建出了一个Intent,传入FirstActivity.this 作为上下文,传入SecondActivity.class 作为目标活动,这样我们的“意图”就非常明显了,即在FirstActivity这个活动的基础上打开SecondActivity这个活动。然后通过startActivity() 方法来执行这个Intent。

2、隐式调用

相比于显式Intent,隐式Intent则含蓄了许多,它并不明确指出我们想要启动哪一个活动,而是指定了一系列更为抽象的action 和category 等信息,然后交由系统去分析这个Intent,并帮我们找出合适的活动去启动。

通过在<activity> 标签下配置<intent-filter> 的内容,可以指定当前活动能够响应的action 和category

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

在<action> 标签中我们指明了当前活动可以响应

com.example.activitytest.ACTION_START 这个action ,而<category> 标签则包含

了一些附加信息,更精确地指明了当前的活动能够响应的Intent中还可能带有的category 。只

有<action> 和<category> 中的内容同时能够匹配上Intent中指定的action 和category

时,这个活动才能响应该Intent。

3、intent返回给上一个活动数据

启动活动时:

button1.setOnClickListener(new View.OnClickListener() { 
@Override public void onClick(View v) {
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
startActivityForResult(intent, 1);
}
});
这里我们使用了startActivityForResult() 方法来启动SecondActivity,请求码只要是一

个唯一值就可以了,这里传入了1。

接下来是第二个活动的返回数据:

public class SecondActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second_layout);
Button button2 = (Button) findViewById(R.id.button_2);
button2.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
Intent intent = new Intent();
intent.putExtra("data_return", "Hello FirstActivity");
setResult(RESULT_OK, intent);
finish();
}
});
}
}

由于我们是使用startActivityForResult() 方法来启动SecondActivity的,在

SecondActivity被销毁之后会回调上一个活动的onActivityResult() 方法,因此我们需要在

FirstActivity中重写这个方法来得到返回的数据,如下所示:

@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode) {
case 1:
if (resultCode == RESULT_OK) {
String returnedData = data.getStringExtra("data_return"); Log.d("FirstActivity", returnedData);
}
break;
default: }
}

如果用户是按返回键退出的该活动,那么只需要将第二个活动中的intent代码写到第二个活动的onBackPressed()方法中即可。

最新文章

  1. .NET 基础一步步一幕幕[out、ref、params]
  2. Expert 诊断优化系列------------------透过等待看系统
  3. ubuntu下rhythmbox歌名显示乱码问题解决
  4. 传智播客--ADO.net--SqlBulkCopy批量插入数据(小白必知)
  5. 为什么基于TCP UDP服务的一些简单服务端口号都是奇数
  6. oracle+servlet+extjs4 分页表格布局示例代码
  7. freeCAD定制界面
  8. Cordova学习(一) 环境搭建
  9. print函数
  10. 【POJ】【2699】The Maximum Number of Strong Kings
  11. .NET DLL 保护措施应用实例(百度云分享工具)
  12. SecureCRT 绝佳配色方案, 保护你的眼睛
  13. Ajax下载文件(页面无刷新)
  14. Group by Grouping
  15. 大白话Vue源码系列(04):生成render函数
  16. JVM之GC算法
  17. Spark 常规性能调优
  18. ubus socket always in connecting status
  19. asp类型转换函数汇总 转贴
  20. 对C#中的Close()和Dispose()的浅析

热门文章

  1. 在Linux下安装C++的OpenCV 3
  2. http 结构初始化
  3. nginx&amp;http 第二章 ngx 事件event配置等初始化
  4. linux 进程间通信 共享内存 shmat
  5. select模型(二 改进服务端)
  6. linux基本操作之linux登陆
  7. uboot分析——makefile
  8. uiautomatorviewer 启动报错
  9. ceph osd tree的可视化
  10. CSS属性(边框)