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   不爱美女爱辣条  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?



点击右上角即可分享
微信分享提示