美文网首页
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