LoginFragment.java 6.74 KB
package com.cnlive.gundam.user.fragment;

import android.accounts.Account;
import android.app.ProgressDialog;
import android.databinding.DataBindingUtil;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.cnlive.gundam.R;
import com.cnlive.gundam.databinding.FragmentLoginBinding;
import com.cnlive.gundam.user.auth.UserService;
import com.cnlive.gundam.user.model.User;
import com.cnlive.gundam.user.util.ToastUtil;
import com.cnlive.libs.user.IUserService;
import com.cnlive.libs.user.UserUtil;
import com.cnlive.libs.user.model.DataEntity;
import com.cnlive.libs.user.model.UserData;
import com.cnlive.libs.util.data.network.Callback;


/**
 * Created by luxiaoman on 2017/5/25.
 */

public class LoginFragment extends Fragment implements View.OnClickListener {
    private FragmentLoginBinding binding;

    //用户数据信息
    public static DataEntity data;

    private Account account;//密码登录的account
    private Account account1;//第三方登录的account

    //跳转页面的对话框
    private ProgressDialog dialog;





    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        binding = DataBindingUtil.inflate(inflater, R.layout.fragment_login, container, false);
        return binding.getRoot();
    }

    public static Fragment newInstance() {
        LoginFragment fragment = new LoginFragment();
        return fragment;
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        initView();
        initToolBar();
    }

    private void initToolBar() {
        //整个页面的大标题
        binding.loginIncludeLayout.toolbarTitle.setText("登录");
    }

    private void initView() {
        //登录
        binding.btnLogin.setOnClickListener(this);
        //返回键
        binding.backSelector.setOnClickListener(this);
        //注册
        binding.register.setOnClickListener(this);
        //短信验证登录
        binding.btnQucikLogin.setOnClickListener(this);
        //忘记密码
        binding.tvForgotPwd.setOnClickListener(this);

    }

    @Override
    public void onClick(View v) {
        int i = v.getId();
        if (i == R.id.back_selector) {//返回上一页面
            getActivity().finish();

        } else if (i == R.id.btn_login) {//登录
            if (0 == binding.edtLoginNumber.getText().length()) {
                ToastUtil.show(getActivity(), "请输入手机号");
                return;
            } else if (0 == binding.edtInputPassward.getText().length()) {
                ToastUtil.show(getActivity(), "请输入密码");
                return;
            }
            /**
             * 用户名&密码登录
             *
             * @param userName          手机邮箱或ID
             * @param pwd               密码
             * @param frmId             渠道ID(非必传参数,可以传"")
             * @param callback          回调
             */
            //显示对话框
            showDialog();

            //可以请求服务器获取token
            account = new Account(binding.edtLoginNumber.getText().toString(), User.ACCOUNT_TYPE);
            Log.v("chinaUserInfoLogin1", String.valueOf(account));


            //调用sdk的密码登录的方法
            UserUtil.login(binding.edtLoginNumber.getText().toString(), binding.edtInputPassward.getText().toString(), "frmId", userdatacall);

        } else if (i == R.id.register) {//进入注册页面
            getFragmentManager()
                    .beginTransaction()
                    .addToBackStack(null)
                    .replace(R.id.login_fragment, RegisterFragment.newInstance()).commit();

        } else if (i == R.id.btn_qucik_login) {//进入短信验证登录页面
            getFragmentManager()
                    .beginTransaction()
                    .addToBackStack(null)
                    .replace(R.id.login_fragment, QuickLoginFragment.newInstance()).commit();

        } else if (i == R.id.tv_forgot_pwd) {//进入忘记密码页面
            getFragmentManager()
                    .beginTransaction()
                    .addToBackStack(null)
                    .replace(R.id.login_fragment, UserFindPasswardFragment.newInstance()).commit();

        }
    }






    /**
     * *密码登录的回调
     */
    protected UserDataCall userdatacall = new UserDataCall();

    private class UserDataCall implements Callback {
        @Override
        public void onState(int what, String extra, Object obj) {
            Log.v("onState",extra);
            switch (what) {
                case IUserService.SUCCESS:
                    ToastUtil.show(getActivity(), "密码登录成功");
                    closeDialog();
                    UserData userData = (UserData) obj;
                    data = userData.getData();
                    UserService userService = UserService.getInstance(getActivity());
                    userService.setUserInfo(account, data);
                    //userService.isAutoLogin();
                    userService.autoLogin(binding.edtLoginNumber.toString(), binding.edtInputPassward.getText().toString(), data);

                    if (null != data.toString()) {
                        //getFragmentManager().popBackStack();
                        getActivity().finish();
                    }
                    break;
                case IUserService.ERROR_PARAM:
                    ToastUtil.show(getActivity(), IUserService.message_error_param);
                    break;
                case IUserService.ERROR_USER_NOT_FOUND:
                    ToastUtil.show(getActivity(), IUserService.message_error_user_not_found);
                    break;
                case IUserService.ERROR_USERNAME_OR_PASSWORD:
                    ToastUtil.show(getActivity(), IUserService.message_error_username_or_password);
                    break;
                case IUserService.ERROR_PASSWORD:
                    ToastUtil.show(getActivity(), IUserService.message_error_password);
                    break;
            }
            closeDialog();
        }
    }

    /**
     * 显示对话框
     */
    public void showDialog() {
        if (dialog == null) {
            dialog = new ProgressDialog(getActivity());
            dialog.setMessage("正在登录,请稍等...");
        }
        if (!dialog.isShowing()) {
            dialog.show();
        }
    }

    /**
     * 关闭对话框
     */
    public void closeDialog() {
        if (dialog != null && dialog.isShowing()) {
            dialog.dismiss();
        }
    }
}