Android中数据的传递与回传数据的接收
大致的思路:
主页面:
1.创建一个Intent对象.
Intent intent=new Intent (Content content,Activity2.class);
第一个参数是上下文,第二个参数是要开启的组件的名字,组件名.class
2.将要传递的数据存储到Intent对象上.
intent.putExtra(键名,值);
用键值对的形式进行存储数据.
3.用Android提供的startActivityForResult();方法来实现数据的回传
startActivityForResult(intent,1);
第一个参数:Intent对象
第二个参数:请求码
请求码的作用:当你一个Activity请求多个Activity的时候,会用同一个方法onActivityResult();方法接收回传数据,这个时候我们就要用请求码和结果码进行匹配,判断是哪个Activity的回传数据,不同Activity的回传数据做不同的操作.
4.接收回传数据
重写方法onActivityResult(int requestCode,int resultCode,Intent data);
requestCode表示在启动Activity2的时候传的请求码
resultCode回传数据时传入的结果码
data 携带回传数据的Intent
当Activity2执行完setResult(结果码,intent); 跳到Activity1后会自动调用该方法
Activity2页面:
接收数据:
Intent intent=getIntent(); //获得主页面传过来的intent对象
intent.getStringExtra(键名); //根据键名取出存储在intent对象身上的数据
回传数据:
传数据到主页面Activity1
Intent intent =new Intent(this,Activity1); //创建一个开启Activity1的Intent对象
intent.putExtra(键名,值); //intent存储要携带的数据
setResult(结果码,intent); //回传数据,开启Activity1
finish(); //销毁当前Activity,切记你不销毁的话,是不会发生跳转的
实例:
Intent_main 主页面
package com.example.myapplication;
import android.content.Intent;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.annotation.Nullable;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class Intent_main extends AppCompatActivity implements View.OnClickListener {
private Button btn_login;
private String username,password;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_intent_main);
btn_login=(Button)findViewById(R.id.btn_login);
btn_login.setOnClickListener(this);
}
@Override
public void onClick(View v) {
username=((EditText)findViewById(R.id.et_userName)).getText().toString();
password=((EditText)findViewById(R.id.et_password)).getText().toString();
Intent intent=new Intent(this,Intent_main2.class);
intent.putExtra("name",username);
intent.putExtra("password",password);
startActivityForResult(intent,1);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Toast.makeText(this,data.getStringExtra("backdata"),Toast.LENGTH_LONG).show();
}
}
Intent_main2 回传数据的页面
package com.example.myapplication;
import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class Intent_main2 extends AppCompatActivity implements View.OnClickListener {
private TextView tv_name,tv_password;
private String name,password;
private Button btn_back;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_intent_main2);
tv_name=(TextView)findViewById(R.id.tv_username);
tv_password=(TextView)findViewById(R.id.tv_password);
btn_back=(Button)findViewById(R.id.btn_back);
Intent intent=getIntent();
name=intent.getStringExtra("name");
password=intent.getStringExtra("password");
tv_name.setText(name);
tv_password.setText(password);
// Toast.makeText(this,intent.getStringExtra("name"),Toast.LENGTH_LONG).show();
btn_back.setOnClickListener(this);
}
@Override
public void onClick(View v) {
Intent intent=new Intent();
if (name.equals("123") || password.equals("456")){
intent.putExtra("backdata","登录成功");
}else{
intent.putExtra("backdata","登录失败");
}
setResult(1,intent);
finish();
}
}