Android学习笔记——Activity之间传递数据
【Android学习笔记——Activity之间传递数据】在Activity中,经常有需要传输数据的时候,两个活动之间传输数据使用Intent来传递数据。
Intent可以携带数据,intent有许多的putextra方法的重载,可以存入数据。然后在被启动的活动中可以使用getIntent()方法来获得启动Activity的intent,然后就可以通过这个Intent来获取数据。
public class MainActivity extends AppCompatActivity {
Button button;
EditText editText;
public static final String SEND_MESG = "MSG";
public static final int RESPONSE_CODE = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button) findViewById(R.id.btn_startactivity);
editText = (EditText) findViewById(R.id.et_mssage);
button.setOnClickListener(new View.OnClickListener() {//设置点击时间
@Override
public void onClick(View view)
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.putExtra(SEND_MESG, editText.getText().toString());
//使用Inent传入Sting数据
startActivityForResult(intent, RESPONSE_CODE);
//使用startActivityForResult()开启一个新的活动,并且加入请求码,用以判断是哪个活动开启了新活动
}
});
}@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//这个方法会在返回新的活动返回数据的时候调用,第一个参数是请求码,第二个参数是返回码,第三个参数是携带了回传数据的Intent
if (requestCode == MainActivity. RESPONSE_CODE)
switch (resultCode) {
case MainActivity.RESULT_OK: {
Toast.makeText(MainActivity.this, data.getStringExtra("data_return"), Toast.LENGTH_SHORT).show();
}
}
}}
现在来看第二个活动
public class SecondActivity extends AppCompatActivity {
TextView textView;
EditText editText;
Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
button = (Button) findViewById(R.id.btn_response);
editText = (EditText) findViewById(R.id.et_return);
textView = (TextView) findViewById(R.id.tv_show);
Intent intent = getIntent();
String s = intent.getStringExtra(MainActivity.SEND_MESG);
textView.setText(s);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent();
intent.putExtra("data_return",editText.getText().toString());
//同样,在Intent中放入EditText中输入的数据
setResult(MainActivity.RESULT_OK,intent);
//然后再调用setResult()方法设置返回值
finish();
}
});
}
}
RequestCode的作用
请求码的值是由自已设定的,用来标识请求来源。例如:一个Activity有两个按钮,点击这两个按钮都会打开同一个Activity,不管是那个按钮打开新Activity,当这个新Activity关闭后,系统都会调用前面Activity的onActivityResult(int requestCode, int resultCode, Intent data)方法。在onActivityResult()方法如果需要知道新Activity是由那个按钮打开的,并且要做出相应的处理;
ResutCode的作用
如果用startActivityForResult()方法打开多个不同的Activity,当这些新Activity关闭后,系统都会调用前面Activity的onActivityResult(int requestCode, int resultCode, Intent data)方法。为了知道返回的数据来自于哪个新Activity,在onActivityResult()方法中可以这样做(ResultActivity和NewActivity为要打开的新Activity):
简单的说,RequestCode是新活动用来判断哪个活动开启的它,ResultCode是用来判断返回的数据来自哪个新活动
推荐阅读
- EffectiveObjective-C2.0|EffectiveObjective-C2.0 笔记 - 第二部分
- android第三方框架(五)ButterKnife
- 由浅入深理解AOP
- 继续努力,自主学习家庭Day135(20181015)
- python学习之|python学习之 实现QQ自动发送消息
- Android中的AES加密-下
- 带有Hilt的Android上的依赖注入
- 一起来学习C语言的字符串转换函数
- 定制一套英文学习方案
- 漫画初学者如何学习漫画背景的透视画法(这篇教程请收藏好了!)