【Android开发】 用Intent传递数据

用Intent传递数据

向下一个Activity传递数据

Intent提供了一系列putExtra()方法的重载,可以把我们想要传递的数据暂存在Intent中,启动了另一个活动后,只需要把这些数据再从Intent中取出就可以了。

button.setOnClickListener(new View.OnClickListener() {
	@Override
	public void onClick(View v) {
		String data = "Hello World";
		Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
		intent.putExtra("extra_data", data);
		startActivity(intent);
	}
)};

接着可以通过getIntent()方法获取到用于启动SecondActivity的Intent,然后调用getStringExtra()方法,传入相应的键值,就可以得到传递的数据了。

pubic class SecondActivity extends AppCompatActivity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.second_layout);
		Intent intent = getIntent();
		String data = intent.getStringExtra("extra_data");
		Log.d("SecondActivity", data);
	}
	
}

向上一个Acitivity返回数据

Activity中有一个startActivityForResult()方法可以用于启动Activity,这个方法期望在活动销毁的时候返回一个结果给上一个活动。

@Override
public void onClick(View v) {
	Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
	startActivityForResult(intent, 1);
}

接着在SecondActivity中构建一个Intent,把要传递的数据存入这个Intent中,然后调用setResult()方法接收两个参数,第一个参数用于向上一个活动返回处理结果,一般使用RESULT_OKRESULT_CANCELED这两个值,第二个参数则把带有数据的Intent传递回去。

@Override
public void onClick(View v) {
	Intent intent = new Intent();
	intent.putExtra("data_return", "Hello World");
	setResult(RESULT_OK, intent);
	finish();
}

SecondActivity被销毁之后会调用上一个Activity的onActivityResult()方法,该方法带有三个参数,第一个参数requestcode,即我们在启动活动时传入的请求码。第二个参数resultCode,即我们在返回数据时传入的处理结果。第三个参数data,即携带着返回数据的Intent。

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
	switch (requestCode) {
		case 1:
			if (resultCode == RESULT_OK) {
				String returnedData = data.getStringExtra("data_return");
				Log.d("FirstActivity", returnedData);
			}
			break;
		default:
	}
}

如果是通过按下Back键返回的,只需要重写onBackPressed()方法。

@Override
public void onBackPressed() {
	Intent intent = new Intent();
	intent.putExtra("data_return", "Hello World");
	setResult(RESULT_OK, intent);
	finish();
}

第一行代码Android(第二版 ) 郭霖 著 人民邮电出版社

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hovf-1120

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值