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之间的跳转和数据传递的讲解,只是我自己的一些见解,若有不对的地方,还请大家指出来,谢谢!

猜你喜欢

转载自blog.csdn.net/YYxiaobao0726/article/details/89153350