信息编辑的实现onActivityResult的运用

来源:互联网 发布:淘宝苹果手机哪家靠谱 编辑:程序博客网 时间:2024/06/05 19:11

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

今天要记录的是所有要编辑的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
原创粉丝点击