1.如果活动B要将数据返回给活动A,那么需要以下三步:
1.1在活动A中使用startActivityForResult()方法启动活动B。
1.2在活动B中使用setResult()方法传回Itent。
1.3在活动A中重写onActivityResult()方法。
2.在活动A中使用startActivityForResult()
button1.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v){ Toast.makeText(FirstActivity.this,"你点击了按钮一",Toast.LENGTH_SHORT).show(); Intent intent=new Intent(FirstActivity.this,SecondActivity.class); startActivityForResult(intent,1);//注:第二个参数是请求码,用于之后活动A确认传回信息来源 } });
3.在活动B中使用setResult()
button1.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v){ Intent intent=new Intent();//使用无参构造创建一个Intent对象,使用无参的原因是当前不需要使用Intent来切换到另外一个活动 intent.putExtra("data_return","这是来自B活动的信息,你好A" );//使用putExtra()放入要传回的信息 setResult(RESULT_OK,intent);//第一个参数表示返回处理的结果,一般使用RESULT_OK,第二个参数是一个带传回数据的Intent finish();//销毁当前活动 } });
4.在活动A中重写onActivityResult()
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch(requestCode){ case 1://使用switch和requestCode判断信息是否来源于B if(resultCode==RESULT_OK){//判断返回结果是否成功 String returnedData=data.getStringExtra("data_return");//得到传回值,参数是之前活动B中起的名字 Log.d("FirstActivity",returnedData);//使用Log日志工具打印debug级别信息 } break; default: } }
5.如果用户通过back键返回
这里要注意的是如果用户不是通过我们设置的按钮返回活动A,而是使用BACK键,那么只需要在活动B中重写onBackPressed()方法。
@Override public void onBackPressed() { Intent intent=new Intent(); intent.putExtra("data_return","这是来自B活动的信息,你好A" ); setResult(RESULT_OK,intent); finish(); }