一. 新建一个空的工程,并添加一个按钮
二.新建一个布局文件,命名为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(); } } }); }
运行结果