智能管家---13.个人中心数据处理开发(编辑资料)

接下来实现智能管家的各个分功能,在用户个人中心里,有显示个人资料,如下图:
这里写图片描述

xml文件:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="200dp"
            android:orientation="vertical"
            android:gravity="center"
            >

            <ImageView
                android:layout_width="96dp"
                android:layout_height="96dp"
                android:src="@mipmap/ic_launcher"/>

            <TextView
                android:layout_width="100dp"
                android:layout_height="30dp"
                android:text="编辑资料"
                android:textSize="16dp"
                android:textColor="#ffffff"
                android:layout_marginTop="10dp"
                android:id="@+id/edit_user"
                android:gravity="center"
                android:background="@drawable/button_bg"
                />
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:padding="10dp">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="姓名:"
                android:textSize="20dp"/>

            <EditText
                android:id="@+id/et_name"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:textColor="@color/colorPrimary"/>

        </LinearLayout>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:padding="10dp">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="性别:"
                android:textSize="20dp"/>

            <EditText
                android:id="@+id/et_sex"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:textColor="@color/colorPrimary"/>

        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:padding="10dp">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="年龄:"
                android:textSize="20dp"/>

            <EditText
                android:id="@+id/et_age"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:textColor="@color/colorPrimary"/>

        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:padding="10dp">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="简介:"
                android:textSize="20dp"/>

            <EditText
                android:id="@+id/et_doc"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:textColor="@color/colorPrimary"/>

        </LinearLayout>

        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:background="@drawable/button_bg"
            android:text="确认修改"
            android:id="@+id/btn_update_ok"
            android:textColor="#ffffff"
            android:visibility="gone"
            />
        <TextView
            android:id="@+id/tv_courier"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="15dp"
            android:text="物流查询"
            android:textSize="20dp"/>

        <View
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:alpha="0.5"
            android:background="@color/colorPrimary"/>

        <TextView
            android:id="@+id/tv_phone"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="15dp"
            android:text="归属地查询"
            android:textSize="20dp"/>

        <View
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:alpha="0.5"
            android:background="@color/colorPrimary"/>

        <Button
            android:id="@+id/btn_exit_user"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:background="@drawable/button_bg"
            android:text="退出登录"
            android:textColor="@android:color/white"/>



    </LinearLayout>
</ScrollView>

接下来实现的功能是编辑资料和退出登录,因为基于Bmob实现用户数据存储,所以这两个功能实现都要参照bmob官方文档。

退出登录

先看文档:
这里写图片描述

所以退出登录加上这两行代码在实现跳转页面到登录界面就可以了,具体如下:
这里写图片描述

编辑资料

点击编辑资料后,就回出现确认修改的button,这个button默认是设置隐藏的,所以点击编辑资料后将其显示。

另外,在个人中心界面,里面的数据如果没有点击编辑资料是不能修改的,所以要对他们设置不可点击,当点击编辑资料后,里面的姓名年龄等才可以点击进行修改。

将这个方法封装:
这里写图片描述

接下来就是具体过程:

  • 定义并初始化:
  • 这里写图片描述
  • 这里写图片描述
  • 获取本地对象,个人中心显示出数据,即为name等设置具体的值
  • 这里写图片描述
  • 点击编辑资料时,按钮显示,可以修改
  • 这里写图片描述
  • 点击确认修改时,将编辑的值存入user对象,并且修改,下面是文档上的操作:
  • 这里写图片描述
    我们具体带入相关参数即可
  • 我们的操作
  • 这里写图片描述

代码(功能还没实现完,这只是这部分的功能代码)

public class UserFragment extends Fragment implements View.OnClickListener {

    private Button btn_exit_user;
    private Button btn_update_ok;
    private TextView edit_user;
    private EditText et_name;
    private EditText et_age;
    private EditText et_doc;
    private EditText et_sex;


    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view=inflater.inflate(R.layout.fragment_user,container,false);
        initView(view);
        return view;
    }

    private void initView(View view) {

        btn_exit_user=(Button)view.findViewById(R.id.btn_exit_user);
        btn_exit_user.setOnClickListener(this);
        btn_update_ok=(Button)view.findViewById(R.id.btn_update_ok);
        btn_update_ok.setOnClickListener(this);
        edit_user=(TextView) view.findViewById(R.id.edit_user);
        edit_user.setOnClickListener(this);
        et_name=(EditText)view.findViewById(R.id.et_name);
        et_age=(EditText)view.findViewById(R.id.et_age);
        et_sex=(EditText)view.findViewById(R.id.et_sex);
        et_doc=(EditText)view.findViewById(R.id.et_doc);

        //默认不可修改
        setEnabled(false);

        //获取本地用户对象
        MyUSer myUSer = BmobUser.getCurrentUser(MyUSer.class);
        et_name.setText(myUSer.getUsername());
        et_age.setText(myUSer.getAge());
        et_sex.setText(myUSer.isGender()?"男":"女");
        et_doc.setText(myUSer.getDoc());

    }

    //未编辑资料时不可点击修改
    public void setEnabled(boolean alter){
        et_doc.setEnabled(alter);
        et_name.setEnabled(alter);
        et_sex.setEnabled(alter);
        et_age.setEnabled(alter);
    }


    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.btn_exit_user:
                MyUSer.logOut();   //清除缓存用户对象
                BmobUser currentUser = MyUSer.getCurrentUser(); // 现在的currentUser是null了,返回对象时BmobUser
                startActivity(new Intent(getActivity(), LoginActivity.class));
                getActivity().finish();
                break;

            case R.id.edit_user:
               setEnabled(true);
               btn_update_ok.setVisibility(View.VISIBLE);
               break;

            case R.id.btn_update_ok:
                String name=et_name.getText().toString().trim();
                String age=et_age.getText().toString().trim();
                String sex=et_sex.getText().toString().trim();
                String doc=et_doc.getText().toString().trim();

                if(!TextUtils.isEmpty(name)&&!TextUtils.isEmpty(age)&&!TextUtils.isEmpty(sex)){

                    //设置属性值
                    MyUSer uSer=new MyUSer();
                    uSer.setUsername(name);
                    uSer.setAge(age);

                    //简介
                    if(!TextUtils.isEmpty(doc)){
                        et_doc.setText(doc);
                    }else{
                        et_doc.setText("这个人很懒,什么也没有留下!");
                    }

                    //性别
                    if(sex.equals("男")){
                        uSer.setGender(true);
                    }else{
                        uSer.setGender(false);
                    }
                    BmobUser bmobUser = BmobUser.getCurrentUser();
                    uSer.update(bmobUser.getObjectId(), new UpdateListener() {
                        @Override
                        public void done(BmobException e) {
                            if(e==null){
                                setEnabled(false);
                                btn_update_ok.setVisibility(View.GONE);
                                Toast.makeText(getActivity(), "信息修改成功!", Toast.LENGTH_SHORT).show();
                            }else{
                                Toast.makeText(getActivity(), "信息修改失败!", Toast.LENGTH_SHORT).show();
                            }
                        }
                    });

                }else{
                    Toast.makeText(getActivity(), "输入框不能为空", Toast.LENGTH_SHORT).show();
                }
                break;
        }
    }
}

猜你喜欢

转载自blog.csdn.net/ayangann915/article/details/81510649
今日推荐