热门标签 | HotTags
当前位置:  开发笔记 > Android > 正文

Android学习小结之获取被启动的Activity传回的数据

这篇文章主要介绍了获取被启动的Activity传回的数据,非常不错,介绍的非常详细,需要的朋友可以参考下

当前Activity:包含一个Button和一个TextView,用于启动另一个Activity和显示传回的数据,这里重写了onActivityResult()方法。

public class MainActivity extends AppCompatActivity {
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//找到TextView
textView=(TextView)findViewById(R.id.textView);
findViewById(R.id.btnSend).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent=new Intent(MainActivity.this,AnotherActivity.class);
startActivityForResult(intent,0);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
textView.setText("另外一个Activity传回来的数据是:"+data.getStringExtra("data"));
}
}

XML文件:activity_main.xml

<&#63;xml version="1.0" encoding="utf-8"&#63;>

被启动的Activity:包含一个Button和editText,用于将数据发送回去和输入要传的数据。

public class AnotherActivity extends AppCompatActivity {
private EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_another);
editText= (EditText) findViewById(R.id.editText);
Button button= (Button) findViewById(R.id.btnSendBack);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//返回结果
Intent i=new Intent();
i.putExtra("data",editText.getText().toString());
setResult(1,i);
finish();
}
});
}
}

xml文件:activity_another.xml

<&#63;xml version="1.0" encoding="utf-8"&#63;>


运行结果:

补充:这里点击发送回去按钮返回上一个Activity没有问题,但是如果点系统自带的返回键就会出错了,出现此bug的原因就是resultCode没有判断,点击系统自带的返回键的resultCode==RESULT_CANCELED,所以是不一样的。

解决方法:所以这里的requestCode和resultCode就能发挥作用了,在上述程序中requestCode==0,resultCode==1,也就是需要判断是否是跳转到该Activity以及返回上一个Activity是通过该按钮还是通过系统返回键来进行的,所以MainActivity中的onActivityResult()方法可以改进为:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode==0){
if(resultCode==1){
textView.setText("另外一个Activity传回来的数据是:"+data.getStringExtra("data"));
}
}
}

以上所述是小编给大家介绍的获取被启动的Activity传回的数据,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


推荐阅读
author-avatar
鸿少爷仰望星空
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有