安卓使用之页面跳转和数据传递和数据返回

本文介绍了Android应用间数据传递的三种方式:简单数据、数据包和对象传递,并详细讲解了每种方法的使用实例。同时涵盖了页面跳转、活动返回和数据返回的最佳实践,包括startActivity(), finish(), 和 startActivityForResult() 的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

页面跳转:

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();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值