一、Intent
显式Intent
通过提供目标应用的软件包名称或完全限定的组件类名来指定可处理 Intent 的应用。通常,您会在自己的应用中使用显式 Intent 来启动组件,这是因为您知道要启动的 Activity 或服务的类名。例如,您可能会启动您应用内的新 Activity 以响应用户操作,或者启动服务以在后台下载文件。
通过显式Intent实现页面跳转
Activity代码
Button button = findViewById(R.id.bottom);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent start = new Intent(MainActivity.this, Main2Activity.class);
startActivity(start);
}
});
隐式Intent
不会指定特定的组件,而是声明要执行的常规操作,从而允许其他应用中的组件来处理。例如,如需在地图上向用户显示位置,则可以使用隐式 Intent,请求另一具有此功能的应用在地图上显示指定的位置。
通过隐式Intent实现页面跳转
AndroidManifest代码
<activity android:name=".Main2Activity">
<intent-filter>
<!--添加action标签,说明此活动只能被这个action启动,名字可以随便命名-->
<action android:name="12"/>
<!--添加category标签,两个标签同时满足,才能启动活动,但category.DEFAULT为默认category,因此启动时不需要指定-->
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Activity代码
Button button = findViewById(R.id.bottom);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent start = new Intent("12");//这里的名字和之前的action定义的名字相同
startActivity(start);
}
});
二、使用Intent实现数据传递
点击按钮后把输入的数据展示在第二个界面
第一个activity
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent start = new Intent(MainActivity.this, Main2Activity.class);
Bundle bundle = new Bundle();
String edit = String.valueOf(editText.getText());//获得editText中的文本内容
bundle.putString("edit",edit);//新建一个bundle使用键值对的方式存放数据
start.putExtras(bundle);//将bundle放在Intent中
startActivity(start);
}
});
第二个activity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
TextView textView = findViewById(R.id.text);
textView.setText("您输入的文字为:"+getIntent().getExtras().getString("edit"));//通过键key获取intent中的bundle中的数据
}