Activity的创建配置启动关闭 显式隐式 Activity之间跳转

2.启动配置和显式隐式跳转

<activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

这是系统默认自带的 在AndroidManifest.xml中配置的
还可以在Activity中配置

  Intent intent = new Intent();
  intent.setAction("com.example.four_moduels.SecondActivity");
                startActivity(intent);

算了不一个一个说了
直接看一个例子
image
效果就是从第一个activity跳到第二个activity
两种跳转方式
显式隐式 Intent意图

  • 显式就跟启动activity一样 在第一个配置就行

bt2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setAction("com.example.four_moduels.SecondActivity");
startActivity(intent);
}
});
设置了OnClickListener事件 然后就是setAction中你的包位置别错了

  • 隐式 需要在清单文件中配置

<activity android:name=".SecondActivity"android:exported="true">
image
其中action属性 表示Intent对象要完成的动作
category属性需要为DEFAULT 因为系统默认为Intent添加了category name属性 这样才能就收隐式Intent

image

调用finish()关闭Activity


现在看一下activity跳转并进行数据传递和回传

  • 使用Intent的putExtra()方法传递数据
          Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
            intent.putExtra("name","高远");
            intent.putExtra("age",18);
            startActivity(intent);
			
接受 Intent intent = getIntent();
    String name = intent.getStringExtra("name");
    int  age = intent.getIntExtra("age",0);

0为未接受到时候 默认值 还可以传递bool 数组 等等

  • 使用Bundle类传递数据 类似Map接口 通过键值对形式保存数据

Bundle bundle = new Bundle();
bundle.putString("name","高远");
bundle.putString("age","哈哈哈");
intent.putExtras(bundle);
startActivity(intent);
接受
Bundle extras = getIntent().getExtras();
String name_Bundle = extras.getString("name");
String age_Bundle = extras.getString("age");


数据回传
三个方法

  1. startActivityForResult()

用于开启一个Activity 当开启的Activity被销毁时 会从销毁的Activity返回数据

  1. setResult()

用于携带数据进行回传

  1. onActivityResult()

用于接收回传的数据

我们用三个方法从第二个返回第一个acttivity
回传数据

 bt3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                Intent intent1 = new Intent();
                intent1.putExtra("data","只是第二个传来的");
                setResult(2,intent1);
                finish();
            }
        });

接受

startActivityForResult(intent,1);
 @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode==1&&resultCode==2){
            String data1 = data.getStringExtra("data");
            Toast.makeText(FirstActivity.this,data1,Toast.LENGTH_SHORT).show();
        }
    }
	这里用到了Toast类就是一个弹窗消息 相当于js中的alert吧

完事

posted on 2024-04-03 17:00  蒸饺  阅读(28)  评论(0)    收藏  举报