文章目录
一、显示Intent
显示Intent,只用在Activity文件中作出修改。
1.核心概念
Intent intent = new Intent(MainActivity.this,SomeoneActivity.class);
startActivity(intent);
其中,Intent的构造方法Intent(Context packageContext, Class<?> cls)
的参数:
- packageContext:启动活动的上下文。以
.this
结尾。 - cls:要启动的活动。以
.class
结尾。
startActivity()启动intent跳转到Activity中。
2.例子
点击按钮跳转到另一个Activity。
public class MainActivity extends AppCompatActivity{
private Button btn1;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn1= this.<Button>findViewById(R.id.btn1);
}
public void click(View v)
{
Toast.makeText(this,"新的界面",Toast.LENGTH_LONG).show();
Intent intent = new Intent(MainActivity.this,MissionActivity.class);
startActivity(intent);
}
}
二、隐式Intent
隐式Intent关键在Manifest注册表中做出修改,以及在Activity中作出启动的操作。
1.简单使用
xml中
<activity android:name=".Main2Activity">
<intent-filter>
<action android:name="my action"></action>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
Activity中
Intent intent = new Intent("my action");
startActivity(intent);
action和category的DEFAULT属性必须有,不然会报错。因为action和category两者共同确定是哪个Activity。
【为什么这个intent没有写category属性】
因为startAcitivity()自动将属性添加到intent中。
【action一般怎么写】
可以有空格,如:my action
一般是自己的包名+活动名,如:com.example.hello.Main2Activity
2.action
(1)Intent(action)
构造时Intent时设置action属性。
Intent(String action)
参数:
action是Manifest文件中Activity的intent-filter的action的name。
比如:
Intent intent = new Intent("my action");
(2)setAction()
intent()无参数构造,然后使用setAction()。
比如:
Intent intent = new Intent();
intent.setAction("my action");
startActivity(intent);
(3)启动系统自带的活动
【Android】利用intent拨打电话
【Android】利用intent启动浏览器
3.category
即使有自定义category,也必须有DEFAULT属性。去掉DEFAULT就出错。
<activity android:name=".Main2Activity">
<intent-filter>
<action android:name="my action" />
<category android:name="x"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
Intent intent = new Intent("my action");
intent.addCategory("x");
startActivity(intent);