Activity之间的跳转与数据传递

电玩女神 2022-02-22 15:40 356阅读 0赞
1.Activity之间的跳转

使用Intent(意图)

  • 显式意图可以直接通过名称开启指定的目标组件
  • 隐式意图通过指定action和category等属性,系统根据这些信息进行分析后寻找目标Activity

显式意图

  1. Intent intent = new Intent(MainActivity.this,LayoutActivity.class);
  2. /*参数1:上下文 参数2:要跳转的类class*/
  3. startActivity(intent);

隐式意图
没有明确指定组件名的Intent称为隐式意图。Android系统会根据隐式意图中设置的动作(action)、类别(category)、数据(Uri和数据类型)找到最合适的组件。

  1. <activity android:name="com.zwk.intent.Activity">
  2. <intent-filter>
  3. <action android:name="com.zwk.xxx"/>
  4. <category android:name="android.intent.category.DEFAULT"/>
  5. </intent-filter>
  6. </activity>

上述代码中,< action>标签指明了当前Activity可以相应的动作为“com.zwk.xxx”,而< category>标签则包含了一些类别的信息,只有当< action>和< category>中的内容同时匹配时,Activity才会同时被开启。

Activity中的代码如下:

  1. Intent intent=new Intent();//创建Intent对象
  2. intent.setAction("com.zwk.xxx");//设置动作和清单文件一样
  3. startActivity(intent);//开启Activity
2.Activity中的数据传递

MainActivity.java

  1. Intent intent = new Intent(MainActivity.this,SecondActivity.class);
  2. intent.putExtra("userName","赵丽颖");
  3. startActivity(intent);

SecondActivity.java

  1. // 获得意图
  2. Intent intent = getIntent();
  3. String userName = intent.getStringExtra("userName");
  4. // 简单提示信息
  5. Toast.makeText(this,"用户名:"+userName,Toast.LENGTH_LONG).show();
3.Activity中的数据回传

MainActivity.java

  1. Intent intent = new Intent(MainActivity.this,SecondActivity.class);
  2. startActivityForResult(intent,requestCode);

SecondActivity.java

  1. Intent intent = new Intent();
  2. intent.putExtra("result","登录成功");
  3. setResult(RESULT_OK,intent);
  4. // 手动销毁Activity
  5. finish();

MainActivity.java

  1. /* 数据回传,需要重写onActivityResult方法 */
  2. @Override
  3. protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
  4. super.onActivityResult(requestCode, resultCode, data);
  5. switch (requestCode){
  6. case 1001:
  7. if(resultCode == RESULT_OK){
  8. String result = data.getStringExtra("result");
  9. Toast.makeText(MainActivity.this,result,Toast.LENGTH_LONG).show();
  10. }
  11. break;
  12. }
  13. }
  14. 以上就是关于Activity之间的跳转和数据传递的讲解,只是我自己的一些见解,若有不对的地方,还请大家指出来,谢谢!

发表评论

表情:
评论列表 (有 0 条评论,356人围观)

还没有评论,来说两句吧...

相关阅读