向下一个活动传递数据
在第一个活动中的代码输入:
在一个按钮事件中
String data =”hello World!”;
Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
intent.putExtra(“extra_data”,data);
startActivity(intent);
Intent的构造函数的两个参数,第一个为本活动,第二个为要传输的第二个活动字节。
通过Intent 提供的putExtra来将数据传递,有两个参数,第一个参数是个类似于字符串的ID,第二个参数为需要传递的字符串。
在第二个活动中输入以下代码:
在onCreate这个函数中以下代码
Intent intent = getIntent();
String data = intent.getStringExtra(“extra_data”);
Log.d(“SecondActivity”,data);
第一行:获取Intent传入本Intent中,
第二行:通过getStringExtra函数进行传入,参数为上一个字符串样式的ID。如果传入的数值为整型时,getIntExtra()一样的,则为getXxxExtra()类似。
第三行:在控制台上输出字符串。
通过点击第一个活动的按钮事件,则会将活动一定义好的字符串传递给活动二,并在控制台上显示信息。
向上活动传递数据
接受第二个活动发送的数据,需要运用函数startActivityForResult()
在第一个活动中输入以下代码:
在一个事件中:
Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
//用startActivityForResult这个方法来启动SecondActivity这个活动
startActivityForResult(intent,1);
startActivityForResult的第一个参数为intent,第二个参数为请求码。
第二个活动的一个事件中输入以下代码:
Intent intent = new Intent();
intent.putExtra(“data_return”,”hello FirstAcitvity”);
setResult(RESULT_OK,intent);
finish();//当按下这个按钮,撤销这个活动的时候,就会在控制台返回头上的hello FirstAcitvity。
第三行:这个方法是专门向上返回数据的。第一个参数用于向上一个活动返回处理结果,一般为RESULT_OK或者RESULT_CANCELED,第二个参数则把带有数据的Intent传递回去。然后调用finish();方法。
接着在第一个活动中重写接下来这个方法。
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
switch (requestCode) {
case 1:
if(resultCode==RESULT_OK){
String returndata = data.getStringExtra(“data_return”);
Log.d(“FirstActivity”,returndata);
}
break;
default:
}
}
当按下第二个活动中的按钮的时候,就会把第二个活动中定义好的字符串打印到控制台上面
当按下收集返回按钮时返回的数据
第二个活动中的代码:按下返回键就会把要传递的数据传递给第一个活动,让第一个活动输出。
public void onBackPressed(){
Intent intent = new Intent();
intent.putExtra(“data_return”,”xixixixiixi”);
setResult(RESULT_OK,intent);
finish();
}