一、显式Intent
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_layout); Button btn=(Button)findViewById(R.id.button1); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent=new Intent(MainActivity.this,Main2LayoutActivity.class); startActivity(intent); } }); }
- 实现的效果是: 点击id为button1的按钮就会从MainActivity 这个活动跳转到Main2LayoutActivity这个活动,即从MainActivity这个活动的布局跳转到Main2LayoutActivity这个活动对应的布局。
二、隐式Intent
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_layout); Button btn=(Button)findViewById(R.id.button1); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent=new Intent("com.example.myAction"); intent.addCategory("android.intent.category.DEFAULT"); startActivity(intent); } }); }
- 与显式区别在于,Intent的构造函数不再直接定义从哪个活动跳转到哪个活动,而是匹配哪个活动的<action>和<category>符合Intent中指定的action和category。所以
- 要想实现跳转,则必须定义一个符合Intent中指定的action和category的活动。如下:
AndroidManifest.xml:
<activity android:name=".Main2LayoutActivity"> <intent-filter> <action android:name="com.example.myAction"></action> <category android:name="android.intent.category.DEFAULT"></category> </intent-filter> </activity>
效果:
点击按钮:
-
intent.addCategory("android.intent.category.DEFAULT");可以省略,因为intent会默认自动带上这个category。
- 一个Intent只能指定一个Action,但是能指定多个category。
三、更多隐式Intent的使用
时间: 2024-11-03 05:43:10