如何切换到自定义的Activity
2024-09-28 09:46:09
一. 新建一个空的工程,并添加一个按钮
二.新建一个布局文件,命名为my_aty, 并添加一个文本
三.新建一个类,命名为MyAty,并重写onCreate函数
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_aty);//绑定布局文件
}
四.修改MainAcitivity.java,启动MyAty
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.btnStartMyAty).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(MainActivity.this,MyAty.class));
}
});
}
五.在AndroidManifestAcivity.xml中注册MyAty
<activity android:name=".MyAty"/>
六.运行结果
PS:还可以采用另一种方式实现activity之间的切换,即隐式Intent
在MyAty中添加一个常量
public static final String ACTION = "com.example.luozhenshan.learnintent.intent.action.MyAty";
MainAcitivity.java中的代码修改为:
startActivity(new Intent(MyAty.ACTION));
AndroidManifest.xml中的代码修改为:
<activity android:name=".MyAty">
<intent-filter>
<category android:name="android.intent.category.DEFAULT"/>
<action android:name="com.example.luozhenshan.learnintent.intent.action.MyAty"/>
</intent-filter>
</activity>
使用隐式Intent可实现跨应用调用Activity
一.在同一个project中新建一个模块,命名为App1,并在布局文件中添加一个按钮
此时会显示有两个不同的App:App和App1
二. 修改App1的MainActivity.java的onCreate函数
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.btnStartMyAty).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent("com.example.luozhenshan.learnintent.intent.action.MyAty"));
}
});
}
三.运行结果
如何禁止一个Activity被别的App调用
将MyAty的exported属性设置为false即可。
<activity android:name=".MyAty" android:exported="false">
<intent-filter>
<category android:name="android.intent.category.DEFAULT"/>
<action android:name="com.example.luozhenshan.learnintent.intent.action.MyAty"/>
</intent-filter>
</activity>
一旦别的应用调用MyAty,程序会抛出异常,因此在App1的MainActivity.java中对异常进行处理
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.btnStartMyAty).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
startActivity(new Intent("com.example.luozhenshan.learnintent.intent.action.MyAty"));
}
catch(Exception e)
{
Toast.makeText(MainActivity.this,"can not run the activity",Toast.LENGTH_LONG).show();
}
}
});
}
运行结果
最新文章
- javascript中onload事件如何绑定及执行顺序
- JDBC连接池。。。转载
- HTTP Content-Type的作用
- poj-1469-COURSES-二分图匹配-匈牙利算法(模板)
- 【九度OJ】题目1078-二叉树遍历
- NSUserDefaults存储自定义对象
- 十八、mysql 内存优化 之 myisam
- 什么是 docker?
- smarty 截取字符串,调用php中的方法,foreach循环
- mac mono Fiddler.exe启动失败
- 模板模式之clone()方法
- xtrabackup备份MySQL报错:InnoDB: Error number 24 means &#39;Too many open files&#39;
- 通过 Composer 安装 Laravel 安装器
- java学习之—链表(2)
- DP及其优化
- python自动化开发-9 进程 线程
- Android下载管理DownloadManager功能扩展和bug修改
- Robot Framework 遇到过的错误 1. Chrome打开无法数据网址,地址栏只显示data:,
- Codeforces Round #503 Div. 2
- PHP学习笔记1