页面跳转:
Intent intent = new Intent(Main.this,next.this);
startActivity(intent);
数据传递:
a.传递简单数据(第一种方式)
用法
-
①putExtra(String name,String value);跳转前的数据存放
第一个参数是是键(即要传递数据的名字);
第二个参数是要传递的数据(可以使String型、int型、double型等等)。 -
②getIntent();
-
③getStringExtra(String name);
通过getIntent()获取intent对象来调用getStringExtra,输入key获取value
参数是前面的键,也即是要传递数据的名字。 getIntExtra();实例
main.java
intent = new Intent(MainActivity.this,Aty1.class);
intent.putExtra("data_aty1","这是从MainActivity传入Aty1的数据:"+data);
startActivity(intent);
next.java
Intent intent = getIntent();
String tempData = intent.getStringExtra("data_aty1");
tv_aty1.setText(tempData);
b.传递数据包(第二种方式)
b1用法
-
①Bundle();//方法中存储数据包的方法:
putString(String name,String value); //存储字符串在Bundle包
putInt(String name,int value); //存储整型数据在Bundle包中还可以有float型,double型等,就不一一列出来了) -
②putExtras(Bundle extras);参数extras为数据包Bundle的实例
(或putExtra(String name,Bundle value);name是数据包的名字) -
③getIntent();
-
④Intent中提供有:
getExtras();(或getBundleExtra(String name);方法name是②种数据包的名字) -
⑤取出数据包bundle中数据的方法:
getString(String name);
getInt(String name);等等
b2实列
main.java
intent = new Intent(main.this,next.class);
Bundle bundle = new Bundle();
bundle.putString("name",data);
bundle.putInt("age",18);
intent.putExtras(bundle);
startActivity(intent);
next.java
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
et_aty2.setText(String.format("姓名:%s
年龄:%d",bundle.getString("name"),bundle.getInt("age") ));
C.传对象(第三种方式)
1.实体类需要继承Serializable接口
public class Question implements Serializable {}
2.main.java:
intent = new Intent(main.this,next.class);
Question question = questionList.get(questionIndex);
intent.putExtra("question",question);
startActivity(intent);
3.next.java:
Intent intent = getIntent();
Question question = (Question) intent.getSerializableExtra("question");
页面返回,数据返回:
第一种页面返回是使用startActivity()再次跳转
第二种方式是使用finish()进行退栈
对于第二种方式的数据返回使用如下:
api:
startActivityForResult(intent,200);
setResult(200,intent1);
finish();
onActivityResult
Main.java:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = new Intent(EventCont.this,MainActivity.class);
Bundle bundle = new Bundle();
bundle.putString("name","yld");
bundle.putInt("age",18);
intent.putExtra("bun",bundle);
startActivityForResult(intent,200);
}
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode==resultCode){
Toast.makeText(EventCont.this,data.getStringExtra("res"),Toast.LENGTH_SHORT).show();
}else {
Toast.makeText(EventCont.this,"出错了",Toast.LENGTH_SHORT).show();
}
}
Next.java:
Intent intent1 = new Intent();
intent1.putExtra("res","this page back");
setResult(200,intent1);
finish();