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);
算了不一个一个说了
直接看一个例子
效果就是从第一个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">
其中action属性 表示Intent对象要完成的动作
category属性需要为DEFAULT 因为系统默认为Intent添加了category name属性 这样才能就收隐式Intent
调用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");
数据回传
三个方法
- startActivityForResult()
用于开启一个Activity 当开启的Activity被销毁时 会从销毁的Activity返回数据
- setResult()
用于携带数据进行回传
- 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吧
完事
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?