Activity之间的跳转与数据传递
1.Activity之间的跳转
使用Intent(意图)
- 显式意图可以直接通过名称开启指定的目标组件
- 隐式意图通过指定action和category等属性,系统根据这些信息进行分析后寻找目标Activity
显式意图
Intent intent = new Intent(MainActivity.this,LayoutActivity.class);
/*参数1:上下文 参数2:要跳转的类class*/
startActivity(intent);
隐式意图
没有明确指定组件名的Intent称为隐式意图。Android系统会根据隐式意图中设置的动作(action)、类别(category)、数据(Uri和数据类型)找到最合适的组件。
<activity android:name="com.zwk.intent.Activity">
<intent-filter>
<action android:name="com.zwk.xxx"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
上述代码中,< action>标签指明了当前Activity可以相应的动作为“com.zwk.xxx”,而< category>标签则包含了一些类别的信息,只有当< action>和< category>中的内容同时匹配时,Activity才会同时被开启。
Activity中的代码如下:
Intent intent=new Intent();//创建Intent对象
intent.setAction("com.zwk.xxx");//设置动作和清单文件一样
startActivity(intent);//开启Activity
2.Activity中的数据传递
MainActivity.java
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
intent.putExtra("userName","赵丽颖");
startActivity(intent);
SecondActivity.java
// 获得意图
Intent intent = getIntent();
String userName = intent.getStringExtra("userName");
// 简单提示信息
Toast.makeText(this,"用户名:"+userName,Toast.LENGTH_LONG).show();
3.Activity中的数据回传
MainActivity.java
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
startActivityForResult(intent,requestCode);
SecondActivity.java
Intent intent = new Intent();
intent.putExtra("result","登录成功");
setResult(RESULT_OK,intent);
// 手动销毁Activity
finish();
MainActivity.java
/* 数据回传,需要重写onActivityResult方法 */
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode){
case 1001:
if(resultCode == RESULT_OK){
String result = data.getStringExtra("result");
Toast.makeText(MainActivity.this,result,Toast.LENGTH_LONG).show();
}
break;
}
}
以上就是关于Activity之间的跳转和数据传递的讲解,只是我自己的一些见解,若有不对的地方,还请大家指出来,谢谢!
还没有评论,来说两句吧...