一. 新建一个空的工程,并添加一个按钮

二.新建一个布局文件,命名为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();
}
}
});
}

运行结果

最新文章

  1. javascript中onload事件如何绑定及执行顺序
  2. JDBC连接池。。。转载
  3. HTTP Content-Type的作用
  4. poj-1469-COURSES-二分图匹配-匈牙利算法(模板)
  5. 【九度OJ】题目1078-二叉树遍历
  6. NSUserDefaults存储自定义对象
  7. 十八、mysql 内存优化 之 myisam
  8. 什么是 docker?
  9. smarty 截取字符串,调用php中的方法,foreach循环
  10. mac mono Fiddler.exe启动失败
  11. 模板模式之clone()方法
  12. xtrabackup备份MySQL报错:InnoDB: Error number 24 means &#39;Too many open files&#39;
  13. 通过 Composer 安装 Laravel 安装器
  14. java学习之—链表(2)
  15. DP及其优化
  16. python自动化开发-9 进程 线程
  17. Android下载管理DownloadManager功能扩展和bug修改
  18. Robot Framework 遇到过的错误 1. Chrome打开无法数据网址,地址栏只显示data:,
  19. Codeforces Round #503 Div. 2
  20. PHP学习笔记1

热门文章

  1. 35个例子学会find
  2. C/C++中的行读取
  3. Web框架简介
  4. JavaScript:关闭当前页面(微信、电脑)
  5. Bootstrap总结二
  6. 使用curl 命令模拟POST/GET请求
  7. Django学习笔记之Django中间件
  8. Java学习之垃圾回收
  9. 编写基本的 udev 规则
  10. js 前台ajax验证马克一下