美文网首页
Android中 Activity数据传输

Android中 Activity数据传输

作者: 亦晴工作室 | 来源:发表于2016-11-15 13:04 被阅读36次

1、Bundle:使用 Intent 提供的 putExtras()方法将将要携带的数据保存到 Intent

public class MainActivity extends AppCompatActivity {

    private EditText userEdit,pwdEdit,rePwdEdit,mailEdit;
    private Button commitBtn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        userEdit = (EditText) this.findViewById(R.id.userEditText);
        pwdEdit = (EditText) this.findViewById(R.id.pwdEditText);
        rePwdEdit = (EditText) this.findViewById(R.id.rePwdEditText);
        mailEdit = (EditText) this.findViewById(R.id.mailEditText);

        commitBtn = (Button) this.findViewById(R.id.commitBtn);
        commitBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String user = userEdit.getText().toString(); // 获取用户名
                String pwd = pwdEdit.getText().toString();// 获取密码
                String rePwd = rePwdEdit.getText().toString();// 确认密码
                String mail = mailEdit.getText().toString();// 获取邮箱

                if(!"".equals(user) && !"".equals(pwd) && !"".equals(mail)) // 判断输入是否为空
                {
                    if(!rePwd.equals(pwd)) // 判断两次输入密码的是否相同
                    {
                        Toast.makeText(MainActivity.this, "两次输入的密码不同,请重新输入", Toast.LENGTH_SHORT).show();
                        pwdEdit.setText("");
                        rePwdEdit.setText("");
                        pwdEdit.requestFocus(); //让密码框在此获取焦点
                    }
                    else
                    {
                        Intent intent = new Intent(MainActivity.this,RegisterActivity.class);
                        Bundle bundle = new Bundle(); // 创建并实例化一个 Bundle 对象
                        bundle.putCharSequence("user",user);
                        bundle.putCharSequence("pwd",pwd);
                        bundle.putCharSequence("mail",mail);
                        intent.putExtras(bundle);
                        startActivity(intent);
                    }
                }
                else
                {
                    Toast.makeText(MainActivity.this, "请将注册信息填写完整", Toast.LENGTH_SHORT).show();
                }

            }
        });
    }
}

2、调用另一个 Activity 并返回结果。这时候使用的是 startActivityForResult()方法来启动另一个 Activity
使用下面方法开启新的 Activity
startActivityForResult(intent,CODE); // 用在需要下一个页面回调的时候

在此打开 MainActivity,重写 onActivityResult 方法,在此方法中需要判断 requestCode 和 resultCode 是否相同。

protected void onActivityResult(int requestCode, int resultCode, Intent data){
    super.onActivityResult(requestCode,resultCode,data);
    if(requestCode == CODE && resultCode == CODE)
    {
        Toast.makeText(MainActivity.this, "data="+data.getExtras().getString("user"), Toast.LENGTH_SHORT).show();
    }
}

在 RegisterActivity 中,返回上一步的点击事件

button = (Button) this.findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        setResult(0x717,intent); // 设置返回的结果码, 并返回调用该 Activity 的 Activity
        finish(); // 关闭当前页
    }
});

相关文章

网友评论

      本文标题:Android中 Activity数据传输

      本文链接:https://www.haomeiwen.com/subject/oewkpttx.html