之前,关于传值出了三篇文章,但是忽略了一个至关重要的内容,也是传值中很常用的一个,就是回掉传值activity的启动回掉,方法,这个传值在界面通信之间起着至关重要的作用,下面直接看代码
FirsrActivity中
Intent intent = new Intent(FirsrActivity.this,SecondActivity.class); startActivityForResult(intent,REQUEST_CODE);
这样用来启动SecondActivity,startActitvityForResult中的第一个参数为启动意图,第二个参数为请求编码,
SecondActivity中
//跳回 Intent intent = new Intent(); intent.putStringArrayListExtra("cMeMber", memberList); setResult(RESULT_CODE,intent); finish();
此处是SecondActivity中的设置回传Intent设置 即setResult,第一个参数即是回传的参数,第二个参数是intent.即可以传回多个属性放置在INTENT中,放置bundler也可以,即万物都可以传。
然后继续是FirstActivity中的代码,
protected void onActivityResult(int requestCode, int resultCode, Intent data) { if(data!=null) { if (requestCode == 1) { t_Adress.setText(data.getStringExtra("DeatailPlace")); } else if (requestCode==2 && resultCode == 2) { OppenentName = data.getStringExtra("cOppenentName"); OppenentID = data.getStringExtra("cOppenentID"); m_tvShowName.setText("" + data.getStringExtra("cOppenentName")); }else if(requestCode == 3) { requestAddMatchBaseBean.cTeamID = data.getStringExtra("cMyTeamID"); m_tvShowMyTeam.setText(""+data.getStringExtra("cMyTeamName")); m_tvShowMyMember.setText("已通知 1 人"); m_tvShowMyMemberTab.setTextColor(Color.parseColor("#e8e8e8")); m_tvShowMyMember.setTextColor(Color.parseColor("#e8e8e8")); }else if(requestCode == 4) { memberlist = new ArrayList<>(); memberlist = data.getStringArrayListExtra("cMeMber"); m_tvShowMyMember.setText("已通知 " + memberlist.size()+" 人"); } } super.onActivityResult(requestCode, resultCode, data); }这边是传回的值,是在OnActivityResult中,接受,并且做判断,data既是回传的intent,需要判断是否为空,不然的话容易出错
而且需要判断,resultcode是多少,才能够接受使用