Android Intent传递数据

刚开始看郭大神的<<第一行代码>>,实现以下里面的一些例子.Intent传递数据.
我们利用显示的方式进行Intent的启动.

1.启动intent并输入数据.

Intent intent=new Intent(MainActivity.this,TwoActivity.class
					);
			intent.putExtra("data", "hello two");
			startActivity(intent);

2.接收数据.

Intent intent=getIntent();
		Log.i("data", intent.getStringExtra("data"));

注.intent传递数据的方式是键值对的形式,所以我们要根据预键来取.这里我们传递的是一个String字符串,当然你也可以传递其他数据类型.不过取的时候我们要根据数据类型来使用不同方法取.如下(当然还有很多,以此类推).

		intent.getIntExtra(name, defaultValue);
		intent.getBooleanExtra(name, defaultValue);

3.返回数据

Intent intent1=new Intent(MainActivity.this,TwoActivity.class
					);
			
			intent1.putExtra("data", "hello two");
			startActivityForResult(intent1, 1);

在这里我们使用的不是startActivity();而是startActivityForResult();,这是我们要返回数据,所以必须要一个用来识别返回数据的code.

Intent intent=getIntent();
		data=intent.getStringExtra("data");
		Log.i("data", data);
		findViewById(R.id.btn_twolayout).setOnClickListener(new OnClickListener(
				) {
			
			@Override
			public void onClick(View v) {
				Intent intent=new Intent();
				intent.putExtra("data1", data+"收到.");
				setResult(RESULT_OK, intent);
				finish();
			}
		});

接收并返回数据.setResult(RESULT_OK, intent);.然后我们使用finish();将当前的activity销毁掉,返回上一个activity.

@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		if (requestCode==1) {
			if (resultCode == RESULT_OK) {
				Log.i("data1", data.getStringExtra("data1"));
			}
		}
		super.onActivityResult(requestCode, resultCode, data);
	}

最后我们重写onActivityResult();方法,并判断requestCode是否等于我们预先设定好的code,和resultCode是否等于RESULT_OK.


在onActivityResult();方法里带有三个参数,分别是requestCode,我们在启动活动时传入的请求码.resultCode,我们在返回数据时候传入的处理结果.data,携带着返回数据的intent.

此外我们还有一个问题,如果我们不是通过预先设定好的按钮返回上一个activity,而是通过back按键返回怎么办?

@Override
	public void onBackPressed() {
		Intent intent=new Intent();
		intent.putExtra("data1", data+"收到.");
		setResult(RESULT_OK, intent);
		finish();
	}

这个时候我们可以通过重写onBackPressed(); 方法来解决.这样的话当我们按下back按键,就会去执行onBackPressed();方法中的代码.
么么哒的效果图 o.o

原文地址:https://www.cnblogs.com/stareblankly/p/5054288.html