信息编辑的实现onActivityResult的运用

有一种编辑是刚开始界面不可以编辑,点击编辑按钮后,可以对页面上的信息进行编辑。(这种没有写过)

今天要记录的是所有要编辑的item,点击都是跳转到同一界面,保存后反传值到之前点击的item。

像这个界面,我要添加一个客户


点击item,都是跳转到以下界面,标题根据点击的item变化


添加界面的点击事件代码

 @Event(value = {R.id.rl_name, R.id.rl_sex, R.id.rl_tel, R.id.rl_email, R.id.rl_address})
    private void onItemClick(View v) {
        startActiviIntent.setClass(App.getInstance(), ActivityEdit.class);
        Bundle bundle = new Bundle();//新建一个bundle存值
        switch (v.getId()) {
            case R.id.rl_name:
                bundle.putString("title", "客户姓名");
                bundle.putString("target", tvName.getText().toString());
                bundle.putString("code", "1");
                startActiviIntent.putExtras(bundle);
                startActivityForResult(startActiviIntent, 1);
                break;
            case R.id.rl_sex://系统自带的单选框
        /*        new AlertDialog.Builder(this).setTitle("性别").setSingleChoiceItems(
                        new String[]{"男", "女"}, 0,
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int which) {
                                dialog.dismiss();
                            }
                        }).show();*/

                break;
            case R.id.rl_tel:
                bundle.putString("title", "客户电话");
                bundle.putString("target", tvTel.getText().toString());
                bundle.putString("code", "2");
                startActiviIntent.putExtras(bundle);
                startActivityForResult(startActiviIntent, 2);
                break;
            case R.id.rl_email:
                bundle.putString("title", "客户邮箱");
                bundle.putString("target", tvEmail.getText().toString());
                bundle.putString("code", "3");
                startActiviIntent.putExtras(bundle);
                startActivityForResult(startActiviIntent, 3);
                break;
            case R.id.rl_address:
                bundle.putString("title", "客户地址");
                bundle.putString("target", tvAddress.getText().toString());
                bundle.putString("code", "4");
                startActiviIntent.putExtras(bundle);
                startActivityForResult(startActiviIntent, 4);
                break;
            default:
                break;

        }
    }

编辑界面代码

  Intent intent = getIntent();
        String message = intent.getStringExtra("target").toString().trim();
        code=intent.getStringExtra("code").toString().trim();
        tvTitle.setText(intent.getStringExtra("title").toString().trim());
        etData.setText(message);
        etData.setSelection(message.length());// 使光标置于文末

根据key获取相应的值,在界面上显示,将输入的信息使用bundle类存储起来,再反过去传给点击的item

 @Event(R.id.btn_save)
    private void onSaveClick(View view){
        Bundle bundle = new Bundle();
        switch (code){
            //1-4:目标客户    6-8:预订车辆客户信息     10-17:我的资料
            case "1":
                etData.setInputType(InputType.TYPE_TEXT_VARIATION_PERSON_NAME);//设置输入类型
                bundle.putString("reTarget",etData.getText().toString().trim());//再次存储
                ActivityEdit.this.setResult(11, ActivityEdit.this.getIntent().putExtras(bundle));
                finish();
                break;
            case "2":
                etData.setInputType(InputType.TYPE_CLASS_PHONE);
                bundle.putString("reTarget",etData.getText().toString().trim());
                ActivityEdit.this.setResult(22, ActivityEdit.this.getIntent().putExtras(bundle));
                finish();
                break;
            case "3":
                etData.setInputType(InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS);
                bundle.putString("reTarget",etData.getText().toString().trim());
                ActivityEdit.this.setResult(33, ActivityEdit.this.getIntent().putExtras(bundle));
                finish();
                break;
            case "4":
                bundle.putString("reTarget",etData.getText().toString().trim());
                ActivityEdit.this.setResult(44, ActivityEdit.this.getIntent().putExtras(bundle));
                finish();
                break;
}
}

回到添加客户界面,通过onActivityResult方法获取返回值

 @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (data != null) {//一定要进行非空判断,不然没有值传递的时候会报错
            Bundle bundle = data.getExtras();
            String content = bundle.getString("reTarget").toString().trim();
            switch (resultCode){
                case 11:
                    tvName.setText(content);
                    break;
                case 22:
                    tvTel.setText(content);
                    break;
                case 33:
                    tvEmail.setText(content);
                    break;
                case 44:
                    tvAddress.setText(content);
                    break;
                default:
                    break;
            }
        }
    }

做好啦~

今天之前我还一直有个疑问,写完博客之后才发现我用的是requestCode而不是resultCode,我说怎么获取到的是1,2,3,4,而不是11,22,33,44尴尬

不过还是有个问题:我的输入框明明设置了输入类型,但是运行起来并没有限制(已解决)


这个问题是因为我把输入类型设置写在了点击事件里面,应该在页面启动的时候就根据前面的传值判断输入类型。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值