接下来实现智能管家的各个分功能,在用户个人中心里,有显示个人资料,如下图:
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;
}
}
}