---------由AActivity跳转到BActivity--------
显式跳转1(最常用的方法)
mbtnjump.setOnClickListener(new View.OnClickListener() { //对按钮添加监听事件
@Override
public void onClick(View v) {
Intent intent=new Intent(AActivity.this,BActivity.class);
startActivity(intent);
}
});
显式跳转2
Intent intent=new Intent();
intent.setClass(AActivity.this,BActivity.class);
startActivity(intent);
显式跳转3
Intent intent=new Intent();
intent.setClassName(AActivity.this,"com.example.test.jump.BActivity"); //com.example.test.jump.BActivity是BActivity的完整路径
startActivity(intent);
显式跳转4
Intent intent=new Intent();
intent.setComponent(newComponentName(AActivity.this,"com.example.test.jump.BActivity"));
startActivity(intent);
隐式跳转
Intent intent=new Intent();
intent.setAction("android.gyc.test"); //在Manifest中设置
startActivity(intent);
manifest中:
<activity android:name=".jump.BActivity" //在BActivity处设置
android:label="B">
<intent-filter>
<action android:name="android.gyc.test" /> //任意字符串
<category android:name="android.intent.category.DEFAULT" /> //这里要设置为Default
</intent-filter>
</activity>
--------将数据由AAactivity传递到BActivity--------
通过方法putExtra()。
我们来看一下putExtra的源码:
public @NonNull Intent putExtra(String name, @Nullable String value) {
if (mExtras == null) {
mExtras = new Bundle();
}
mExtras.putString(name, value);
return this;
}
可以看出,其中新建了一个Bundle对象,实际上数据传递是通过Bundle实现的。
因此可以通过创建一个Bundle对象来完成:
Bundle bundle=new Bundle(); //Intent里面放了一个Bundle,Bundle中放了一些数据
bundle.putString("姓名","gyc"); //前面是键值,后面是传递的字符串
bundle.putInt("学号",18); //前面是键值,后面是传递的整数
intent.putExtras(bundle);
startActivity(intent);
也可以直接通过intent来传递:(通常这样做即可)
intent.putExtra("姓名","gyc");
intent.putExtra("学号",17);
startActivity(intent);
在BActivity中接收数据:
Bundle bundle = getIntent().getExtras(); //getExtras()的返回值是一个Bundle
String name=bundle.getString("姓名"); //通过键值来获取
int num=bundle.getInt("学号");
---------BActivity返回A时希望将B中的一些数据返回给A--------
在AActivity中,不使用startActivity(),而是使用startActivityForResult()来完成跳转
intent.putExtra("姓名","gyc");
intent.putExtra("学号",17);
startActivityForResult(intent,0); //0是请求码,根据请求码requestCode判断是在哪一步跳转过去的
在BActivity中
mbtnFinish.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent();
setResult(Activity.RESULT_OK,intent);
intent.putExtra("title","我回来了");
finish(); //结束页面
}
});
在AActivity中通过onActivityResult()方法获取传回来的数据:
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { //获取传回来的数据
super.onActivityResult(requestCode, resultCode, data);
Toast.makeText(AActivity.this,data.getExtras().getString("title"),Toast.LENGTH_LONG).show();
}
效果显示:
点击跳转按钮
点击Finish按钮