SendKeyBoardFragment.java 60 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150
  1. package com.emato.ich.fragment;
  2. import android.os.Bundle;
  3. import android.os.CountDownTimer;
  4. import android.text.Editable;
  5. import android.view.LayoutInflater;
  6. import android.view.View;
  7. import android.view.ViewGroup;
  8. import android.widget.TextView;
  9. import androidx.annotation.NonNull;
  10. import androidx.annotation.Nullable;
  11. import androidx.drawerlayout.widget.DrawerLayout;
  12. import androidx.fragment.app.Fragment;
  13. import com.emato.ich.MainActivity;
  14. import com.emato.ich.R;
  15. import com.emato.ich.api.ICSPClient;
  16. import com.emato.ich.contant.ICSPConstant;
  17. import com.emato.ich.contant.SystemConfigConstant;
  18. import com.emato.ich.databinding.FragmentMyKeyBoardBinding;
  19. import com.emato.ich.databinding.FragmentSendKeyBoardBinding;
  20. import com.emato.ich.entity.vo.ResponseData;
  21. import com.emato.ich.entity.vo.ResponseTokenVo;
  22. import com.emato.ich.local.LocalStorage;
  23. import com.emato.ich.utils.BaseUtils;
  24. import com.emato.ich.utils.ButtonUtils;
  25. import com.emato.ich.utils.JacksonUtils;
  26. import com.emato.ich.utils.Log;
  27. import com.emato.ich.utils.LoggingUtils;
  28. import com.emato.ich.utils.NavUtils;
  29. import com.emato.ich.utils.StringUtils;
  30. import com.emato.ich.utils.TimeOutUtils;
  31. import com.emato.ich.utils.ToastUtils;
  32. import com.fasterxml.jackson.core.JsonProcessingException;
  33. import com.fasterxml.jackson.core.type.TypeReference;
  34. import org.jetbrains.annotations.NotNull;
  35. import java.io.IOException;
  36. import java.util.concurrent.atomic.AtomicBoolean;
  37. import java.util.regex.Pattern;
  38. import okhttp3.Call;
  39. import okhttp3.Callback;
  40. import okhttp3.Response;
  41. /**
  42. * 投递员登录页面
  43. */
  44. public class SendKeyBoardFragment extends Fragment {
  45. private static final String TAG = SendKeyBoardFragment.class.getName();
  46. private FragmentSendKeyBoardBinding binding;
  47. private CountDownTimer timer;
  48. private long start;
  49. @Nullable
  50. @org.jetbrains.annotations.Nullable
  51. @Override
  52. public View onCreateView(@NonNull @NotNull LayoutInflater inflater, @Nullable @org.jetbrains.annotations.Nullable ViewGroup container, @Nullable @org.jetbrains.annotations.Nullable Bundle savedInstanceState) {
  53. start = System.currentTimeMillis();
  54. binding = FragmentSendKeyBoardBinding.inflate(inflater, container, false);
  55. return binding.getRoot();
  56. }
  57. public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
  58. long end = System.currentTimeMillis();
  59. Log.i(TAG, TAG + "页面渲染速度为" + (end - start) + "ms。");
  60. super.onViewCreated(view, savedInstanceState);
  61. BaseUtils.disableEditText(binding.editTextTextPersonName4);
  62. BaseUtils.disableEditText(binding.editTextTextPersonName5);
  63. try {
  64. MainActivity activity = (MainActivity) getActivity();
  65. timer = TimeOutUtils.timeout(activity, SendKeyBoardFragment.this, binding.timeout, 90);
  66. timer.start();
  67. } catch (Exception e) {
  68. Log.e(TAG, "onViewCreated: 倒计时异常! ", e);
  69. LoggingUtils.sendErrorLog("业务异常: 投递员登录页面倒计时异常! ", e);
  70. }
  71. // 如果有配置账号密码, 账号定死
  72. String loginPhone = null;
  73. String loginType = null; // store 门店 courier 快递员投递 collect 快递员揽件
  74. try {
  75. MainActivity activity = (MainActivity) getActivity();
  76. loginPhone = activity.getConfigMap().get(SystemConfigConstant.cabinet_login_phone);
  77. loginType = activity.getBundleMap().get(CourierFragment.class.getName()).getString("loginType");
  78. if("store".equals(loginType)){
  79. // 如果不是门店店员进来 则将注册二维码设置为隐藏
  80. view.findViewById(R.id.qrCodeImage).setVisibility(View.GONE);
  81. view.findViewById(R.id.sendingTitleImage).setVisibility(View.GONE);
  82. view.findViewById(R.id.delivery_code).setTranslationX(-200);
  83. view.findViewById(R.id.editTextTextPersonName4).setTranslationX(-200);
  84. view.findViewById(R.id.editTextTextPersonName5).setTranslationX(-200);
  85. view.findViewById(R.id.button_confirm).setTranslationX(-200);
  86. }else{
  87. }
  88. } catch (Exception e) {
  89. Log.e(TAG, "onViewCreated: 配置登录手机号出错! ", e);
  90. LoggingUtils.sendErrorLog("业务异常: 配置登录手机号出错! ", e);
  91. }
  92. if (!StringUtils.isNullOrEmpty(loginPhone) && "store".equals(loginType)) {
  93. String loginPhoneShow = toHidePhone(loginPhone);
  94. binding.editTextTextPersonName4.setText(loginPhoneShow);
  95. binding.editTextTextPersonName4.setEnabled(false);
  96. } else {
  97. // 4 手机
  98. binding.editTextTextPersonName4.setOnFocusChangeListener((view1, hasFocus) -> {
  99. if (hasFocus) {
  100. binding.keyBoard.inputButton0.setOnClickListener(v -> {
  101. int length = binding.editTextTextPersonName4.getText().length();
  102. if (length >= 11) {
  103. ToastUtils.make(getContext(), "手机号不能超过11位! ");
  104. return;
  105. }
  106. int start = binding.editTextTextPersonName4.getSelectionStart();
  107. binding.editTextTextPersonName4.getText().insert(start, "0");
  108. });
  109. binding.keyBoard.inputButton1.setOnClickListener(v -> {
  110. int length = binding.editTextTextPersonName4.getText().length();
  111. if (length >= 11) {
  112. ToastUtils.make(getContext(), "手机号不能超过11位! ");
  113. return;
  114. }
  115. int start = binding.editTextTextPersonName4.getSelectionStart();
  116. binding.editTextTextPersonName4.getText().insert(start, "1");
  117. });
  118. binding.keyBoard.inputButton2.setOnClickListener(v -> {
  119. int length = binding.editTextTextPersonName4.getText().length();
  120. if (length >= 11) {
  121. ToastUtils.make(getContext(), "手机号不能超过11位! ");
  122. return;
  123. }
  124. int start = binding.editTextTextPersonName4.getSelectionStart();
  125. binding.editTextTextPersonName4.getText().insert(start, "2");
  126. });
  127. binding.keyBoard.inputButton3.setOnClickListener(v -> {
  128. int length = binding.editTextTextPersonName4.getText().length();
  129. if (length >= 11) {
  130. ToastUtils.make(getContext(), "手机号不能超过11位! ");
  131. return;
  132. }
  133. int start = binding.editTextTextPersonName4.getSelectionStart();
  134. binding.editTextTextPersonName4.getText().insert(start, "3");
  135. });
  136. binding.keyBoard.inputButton4.setOnClickListener(v -> {
  137. int length = binding.editTextTextPersonName4.getText().length();
  138. if (length >= 11) {
  139. ToastUtils.make(getContext(), "手机号不能超过11位! ");
  140. return;
  141. }
  142. int start = binding.editTextTextPersonName4.getSelectionStart();
  143. binding.editTextTextPersonName4.getText().insert(start, "4");
  144. });
  145. binding.keyBoard.inputButton5.setOnClickListener(v -> {
  146. int length = binding.editTextTextPersonName4.getText().length();
  147. if (length >= 11) {
  148. ToastUtils.make(getContext(), "手机号不能超过11位! ");
  149. return;
  150. }
  151. int start = binding.editTextTextPersonName4.getSelectionStart();
  152. binding.editTextTextPersonName4.getText().insert(start, "5");
  153. });
  154. binding.keyBoard.inputButton6.setOnClickListener(v -> {
  155. int length = binding.editTextTextPersonName4.getText().length();
  156. if (length >= 11) {
  157. ToastUtils.make(getContext(), "手机号不能超过11位! ");
  158. return;
  159. }
  160. int start = binding.editTextTextPersonName4.getSelectionStart();
  161. binding.editTextTextPersonName4.getText().insert(start, "6");
  162. });
  163. binding.keyBoard.inputButton7.setOnClickListener(v -> {
  164. int length = binding.editTextTextPersonName4.getText().length();
  165. if (length >= 11) {
  166. ToastUtils.make(getContext(), "手机号不能超过11位! ");
  167. return;
  168. }
  169. int start = binding.editTextTextPersonName4.getSelectionStart();
  170. binding.editTextTextPersonName4.getText().insert(start, "7");
  171. });
  172. binding.keyBoard.inputButton8.setOnClickListener(v -> {
  173. int length = binding.editTextTextPersonName4.getText().length();
  174. if (length >= 11) {
  175. ToastUtils.make(getContext(), "手机号不能超过11位! ");
  176. return;
  177. }
  178. int start = binding.editTextTextPersonName4.getSelectionStart();
  179. binding.editTextTextPersonName4.getText().insert(start, "8");
  180. });
  181. binding.keyBoard.inputButton9.setOnClickListener(v -> {
  182. int length = binding.editTextTextPersonName4.getText().length();
  183. if (length >= 11) {
  184. ToastUtils.make(getContext(), "手机号不能超过11位! ");
  185. return;
  186. }
  187. int start = binding.editTextTextPersonName4.getSelectionStart();
  188. binding.editTextTextPersonName4.getText().insert(start, "9");
  189. });
  190. binding.keyBoard.inputButtonCancel.setOnClickListener(v -> {
  191. Editable text = binding.editTextTextPersonName4.getText();
  192. int start = binding.editTextTextPersonName4.getSelectionStart();
  193. if (text.length() > 0) {
  194. if (start > 0) {
  195. text.delete(start - 1, start);
  196. }
  197. binding.editTextTextPersonName4.setText(text, TextView.BufferType.EDITABLE);
  198. binding.editTextTextPersonName4.setSelection(start - 1 < 0 ? text.length() : start - 1);
  199. }
  200. });
  201. // 长按删除
  202. binding.keyBoard.inputButtonCancel.setOnLongClickListener(v -> {
  203. binding.editTextTextPersonName4.getText().clear();
  204. return false;
  205. });
  206. }
  207. });
  208. }
  209. String finalLoginPhone = loginPhone;
  210. String finalLoginType = loginType;
  211. binding.keyBoard.inputButtonConfirm.setOnClickListener(view1 -> {
  212. if (ButtonUtils.isFastClick()) {
  213. return;
  214. }
  215. // 登录逻辑 editTextTextPersonName4 手机 editTextTextPersonName5 密码
  216. String sendPhone = "";
  217. if ("courier".equals(finalLoginType) || "collect".equals(finalLoginType)){
  218. sendPhone = binding.editTextTextPersonName4.getText().toString();
  219. }else {
  220. sendPhone = !StringUtils.isNullOrEmpty(finalLoginPhone) ? finalLoginPhone : binding.editTextTextPersonName4.getText().toString();
  221. }
  222. String password = binding.editTextTextPersonName5.getText().toString();
  223. Pattern phonePattern = Pattern.compile("^((13[0-9])|(14[0,1,4-9])|(15[0-3,5-9])|(16[2,5,6,7])|(17[0-8])|(18[0-9])|(19[0-3,5-9]))\\d{8}$");
  224. Pattern pwdPattern = Pattern.compile("^[0-9]{8,16}$");
  225. if (phonePattern.matcher(sendPhone).matches() && pwdPattern.matcher(password).matches()) {
  226. String finalSendPhone = sendPhone;
  227. ICSPClient.login(sendPhone, password, new Callback() {
  228. @Override
  229. public void onFailure(@NotNull Call call, @NotNull IOException e) {
  230. // TODO 登录失败处理
  231. ToastUtils.make(getContext(), "登录失败!网络异常!");
  232. Log.e(TAG, "onFailure: 登录失败! call: " + call.timeout().toString(), e);
  233. LoggingUtils.sendErrorLog("业务异常: 登录失败!网络异常! ", e);
  234. }
  235. @Override
  236. public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
  237. ((MainActivity) getActivity()).runOnUiThread(() -> {
  238. String responseStr = ICSPClient.isSuccessfulAndParseResponse(response);
  239. if (!StringUtils.isNullOrEmpty(responseStr)) {
  240. try {
  241. ResponseData<ResponseTokenVo> responseData = JacksonUtils.objectmapper.readValue(responseStr, new TypeReference<ResponseData<ResponseTokenVo>>() {
  242. });
  243. ResponseTokenVo data = responseData.getData();
  244. if (responseData.getCode().equals(ICSPConstant.OK)) {
  245. LocalStorage.Session session = new LocalStorage.Session();
  246. session.setPhone(finalSendPhone);
  247. session.setTime(System.currentTimeMillis());
  248. session.setToken(data.getToken());
  249. MainActivity activity = (MainActivity) getActivity();
  250. String pageType = activity.getBundleMap().get(MainFragment.class.getName()).getString("pageType");
  251. String loginType = activity.getBundleMap().get(CourierFragment.class.getName()).getString("loginType");
  252. LocalStorage.getInstance().cleanSession(activity,false);
  253. LocalStorage.getInstance().setSession(session);
  254. Bundle pageTypeBundle = new Bundle();
  255. pageTypeBundle.putString("pageType",pageType);
  256. activity.getBundleMap().put(MainFragment.class.getName(), pageTypeBundle);
  257. Bundle loginTypeBundle = new Bundle();
  258. loginTypeBundle.putString("loginType",loginType);
  259. activity.getBundleMap().put(CourierFragment.class.getName(), loginTypeBundle);
  260. // 登录成功
  261. ToastUtils.make(getContext(), "登录成功!");
  262. if (null != timer) {
  263. timer.cancel();
  264. }
  265. if ("store".equals(finalLoginType) || "courier".equals(finalLoginType)){
  266. Bundle isPayBundle = new Bundle();
  267. isPayBundle.putString("isPay",data.getIsPay());
  268. activity.getBundleMap().put(SendKeyBoardFragment.class.getName(), isPayBundle);
  269. // "30"为供应链账号,定为管理员账号
  270. if("store".equals(finalLoginType) ){
  271. if("10".equals(data.getDelType()) || "30".equals(data.getDelType())){
  272. NavUtils.navigate(SendKeyBoardFragment.this, R.id.action_sendFragment_to_sendMainFragment);
  273. } else {
  274. ToastUtils.make(getContext(), "请用门店账号登录!");
  275. return;
  276. }
  277. }else {
  278. if("20".equals(data.getDelType()) || "30".equals(data.getDelType())){
  279. NavUtils.navigate(SendKeyBoardFragment.this, R.id.action_sendFragment_to_sendMainFragment);
  280. } else {
  281. ToastUtils.make(getContext(), "请用快递员账号登录!");
  282. return;
  283. }
  284. }
  285. // if ("0".equals(data.getIsPay())){
  286. // NavUtils.navigate(SendKeyBoardFragment.this, R.id.action_sendFragment_to_paymentFragment);
  287. // }else {
  288. // NavUtils.navigate(SendKeyBoardFragment.this, R.id.action_sendFragment_to_sendMainFragment);
  289. // }
  290. }else{
  291. if(!"20".equals(data.getDelType())){
  292. ToastUtils.make(getContext(), "请用快递员账号登录!");
  293. return;
  294. }
  295. NavUtils.navigate(SendKeyBoardFragment.this, R.id.action_sendFragment_to_collectMaterialsFragment);
  296. }
  297. } else {
  298. ToastUtils.make(getContext(), responseData.getMsg());
  299. Log.w(TAG, "onResponse: " + responseData.getMsg());
  300. }
  301. } catch (JsonProcessingException e) {
  302. Log.e(TAG, "onViewCreated: 解析登录响应信息错误! response body: " + responseStr, e);
  303. ToastUtils.make(getContext(), "登录失败!");
  304. LoggingUtils.sendErrorLog("业务异常: 登录失败!", e);
  305. } catch (ClassCastException e) {
  306. Log.e(TAG, "onResponse: 解析登录响应信息类型转换错误! response body: " + responseStr, e);
  307. ToastUtils.make(getContext(), "登录失败!");
  308. LoggingUtils.sendErrorLog("业务异常: 登录失败!", e);
  309. } catch (RuntimeException e) {
  310. Log.e(TAG, "onResponse: 登录失败! ", e);
  311. ToastUtils.make(getContext(), "登录失败!");
  312. LoggingUtils.sendErrorLog("业务异常: 登录失败!未知错误! ", e);
  313. }
  314. } else {
  315. // 登录失败
  316. ToastUtils.make(getContext(), "服务异常!请稍后重试!");
  317. }
  318. });
  319. }
  320. });
  321. } else if (!phonePattern.matcher(sendPhone).matches()) {
  322. ToastUtils.make(getContext(), "输入正确的手机号!");
  323. } else if (!pwdPattern.matcher(password).matches()) {
  324. ToastUtils.make(getContext(), "密码格式错误!请输入8-16位的数字!");
  325. }
  326. });
  327. binding.buttonConfirm.setOnClickListener(view1 -> {
  328. if (ButtonUtils.isFastClick()) {
  329. return;
  330. }
  331. // 登录逻辑 editTextTextPersonName4 手机 editTextTextPersonName5 密码
  332. String sendPhone = "";
  333. if ("courier".equals(finalLoginType) || "collect".equals(finalLoginType)){
  334. sendPhone = binding.editTextTextPersonName4.getText().toString();
  335. }else {
  336. sendPhone = !StringUtils.isNullOrEmpty(finalLoginPhone) ? finalLoginPhone : binding.editTextTextPersonName4.getText().toString();
  337. }
  338. String password = binding.editTextTextPersonName5.getText().toString();
  339. Pattern phonePattern = Pattern.compile("^((13[0-9])|(14[0,1,4-9])|(15[0-3,5-9])|(16[2,5,6,7])|(17[0-8])|(18[0-9])|(19[0-3,5-9]))\\d{8}$");
  340. Pattern pwdPattern = Pattern.compile("^[0-9]{8,16}$");
  341. if (phonePattern.matcher(sendPhone).matches() && pwdPattern.matcher(password).matches()) {
  342. String finalSendPhone = sendPhone;
  343. ICSPClient.login(sendPhone, password, new Callback() {
  344. @Override
  345. public void onFailure(@NotNull Call call, @NotNull IOException e) {
  346. // TODO 登录失败处理
  347. ToastUtils.make(getContext(), "登录失败!网络异常!");
  348. Log.e(TAG, "onFailure: 登录失败! call: " + call.timeout().toString(), e);
  349. LoggingUtils.sendErrorLog("业务异常: 登录失败!网络异常! ", e);
  350. }
  351. @Override
  352. public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
  353. ((MainActivity) getActivity()).runOnUiThread(() -> {
  354. String responseStr = ICSPClient.isSuccessfulAndParseResponse(response);
  355. if (!StringUtils.isNullOrEmpty(responseStr)) {
  356. try {
  357. ResponseData<ResponseTokenVo> responseData = JacksonUtils.objectmapper.readValue(responseStr, new TypeReference<ResponseData<ResponseTokenVo>>() {
  358. });
  359. ResponseTokenVo data = responseData.getData();
  360. if (responseData.getCode().equals(ICSPConstant.OK)) {
  361. LocalStorage.Session session = new LocalStorage.Session();
  362. session.setPhone(finalSendPhone);
  363. session.setTime(System.currentTimeMillis());
  364. session.setToken(data.getToken());
  365. MainActivity activity = (MainActivity) getActivity();
  366. String pageType = activity.getBundleMap().get(MainFragment.class.getName()).getString("pageType");
  367. String loginType = activity.getBundleMap().get(CourierFragment.class.getName()).getString("loginType");
  368. LocalStorage.getInstance().cleanSession(activity,false);
  369. LocalStorage.getInstance().setSession(session);
  370. Bundle pageTypeBundle = new Bundle();
  371. pageTypeBundle.putString("pageType",pageType);
  372. activity.getBundleMap().put(MainFragment.class.getName(), pageTypeBundle);
  373. Bundle loginTypeBundle = new Bundle();
  374. loginTypeBundle.putString("loginType",loginType);
  375. activity.getBundleMap().put(CourierFragment.class.getName(), loginTypeBundle);
  376. // 登录成功
  377. ToastUtils.make(getContext(), "登录成功!");
  378. if (null != timer) {
  379. timer.cancel();
  380. }
  381. if ("store".equals(finalLoginType) || "courier".equals(finalLoginType)){
  382. Bundle isPayBundle = new Bundle();
  383. isPayBundle.putString("isPay",data.getIsPay());
  384. activity.getBundleMap().put(SendKeyBoardFragment.class.getName(), isPayBundle);
  385. // "30"为供应链账号,定为管理员账号
  386. if("store".equals(finalLoginType) ){
  387. if("10".equals(data.getDelType()) || "30".equals(data.getDelType())){
  388. NavUtils.navigate(SendKeyBoardFragment.this, R.id.action_sendFragment_to_sendMainFragment);
  389. } else {
  390. ToastUtils.make(getContext(), "请用门店账号登录!");
  391. return;
  392. }
  393. }else {
  394. if("20".equals(data.getDelType()) || "30".equals(data.getDelType())){
  395. NavUtils.navigate(SendKeyBoardFragment.this, R.id.action_sendFragment_to_sendMainFragment);
  396. } else {
  397. ToastUtils.make(getContext(), "请用快递员账号登录!");
  398. return;
  399. }
  400. }
  401. // if ("0".equals(data.getIsPay())){
  402. // NavUtils.navigate(SendKeyBoardFragment.this, R.id.action_sendFragment_to_paymentFragment);
  403. // }else {
  404. // NavUtils.navigate(SendKeyBoardFragment.this, R.id.action_sendFragment_to_sendMainFragment);
  405. // }
  406. }else{
  407. if(!"20".equals(data.getDelType())){
  408. ToastUtils.make(getContext(), "请用快递员账号登录!");
  409. return;
  410. }
  411. NavUtils.navigate(SendKeyBoardFragment.this, R.id.action_sendFragment_to_collectMaterialsFragment);
  412. }
  413. } else {
  414. ToastUtils.make(getContext(), responseData.getMsg());
  415. Log.w(TAG, "onResponse: " + responseData.getMsg());
  416. }
  417. } catch (JsonProcessingException e) {
  418. Log.e(TAG, "onViewCreated: 解析登录响应信息错误! response body: " + responseStr, e);
  419. ToastUtils.make(getContext(), "登录失败!");
  420. LoggingUtils.sendErrorLog("业务异常: 登录失败!", e);
  421. } catch (ClassCastException e) {
  422. Log.e(TAG, "onResponse: 解析登录响应信息类型转换错误! response body: " + responseStr, e);
  423. ToastUtils.make(getContext(), "登录失败!");
  424. LoggingUtils.sendErrorLog("业务异常: 登录失败!", e);
  425. } catch (RuntimeException e) {
  426. Log.e(TAG, "onResponse: 登录失败! ", e);
  427. ToastUtils.make(getContext(), "登录失败!");
  428. LoggingUtils.sendErrorLog("业务异常: 登录失败!未知错误! ", e);
  429. }
  430. } else {
  431. // 登录失败
  432. ToastUtils.make(getContext(), "服务异常!请稍后重试!");
  433. }
  434. });
  435. }
  436. });
  437. } else if (!phonePattern.matcher(sendPhone).matches()) {
  438. ToastUtils.make(getContext(), "输入正确的手机号!");
  439. } else if (!pwdPattern.matcher(password).matches()) {
  440. ToastUtils.make(getContext(), "密码格式错误!请输入8-16位的数字!");
  441. }
  442. });
  443. // 密码
  444. binding.editTextTextPersonName5.setOnFocusChangeListener((view1, hasFocus) -> {
  445. AtomicBoolean caseSmallFlag = new AtomicBoolean(true);
  446. binding.keyBoard.inputButton0.setOnClickListener(v -> {
  447. if(!hasFocus){
  448. return;
  449. }
  450. int length = binding.editTextTextPersonName5.getText().length();
  451. if (length >= 16) {
  452. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  453. return;
  454. }
  455. int start = binding.editTextTextPersonName5.getSelectionStart();
  456. binding.editTextTextPersonName5.getText().insert(start, "0");
  457. });
  458. binding.keyBoard.inputButton1.setOnClickListener(v -> {
  459. if(!hasFocus){
  460. return;
  461. }
  462. int length = binding.editTextTextPersonName5.getText().length();
  463. if (length >= 16) {
  464. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  465. return;
  466. }
  467. int start = binding.editTextTextPersonName5.getSelectionStart();
  468. binding.editTextTextPersonName5.getText().insert(start, "1");
  469. });
  470. binding.keyBoard.inputButton2.setOnClickListener(v -> {
  471. if(!hasFocus){
  472. return;
  473. }
  474. int length = binding.editTextTextPersonName5.getText().length();
  475. if (length >= 16) {
  476. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  477. return;
  478. }
  479. int start = binding.editTextTextPersonName5.getSelectionStart();
  480. binding.editTextTextPersonName5.getText().insert(start, "2");
  481. });
  482. binding.keyBoard.inputButton3.setOnClickListener(v -> {
  483. if(!hasFocus){
  484. return;
  485. }
  486. int length = binding.editTextTextPersonName5.getText().length();
  487. if (length >= 16) {
  488. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  489. return;
  490. }
  491. int start = binding.editTextTextPersonName5.getSelectionStart();
  492. binding.editTextTextPersonName5.getText().insert(start, "3");
  493. });
  494. binding.keyBoard.inputButton4.setOnClickListener(v -> {
  495. if(!hasFocus){
  496. return;
  497. }
  498. int length = binding.editTextTextPersonName5.getText().length();
  499. if (length >= 16) {
  500. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  501. return;
  502. }
  503. int start = binding.editTextTextPersonName5.getSelectionStart();
  504. binding.editTextTextPersonName5.getText().insert(start, "4");
  505. });
  506. binding.keyBoard.inputButton5.setOnClickListener(v -> {
  507. if(!hasFocus){
  508. return;
  509. }
  510. int length = binding.editTextTextPersonName5.getText().length();
  511. if (length >= 16) {
  512. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  513. return;
  514. }
  515. int start = binding.editTextTextPersonName5.getSelectionStart();
  516. binding.editTextTextPersonName5.getText().insert(start, "5");
  517. });
  518. binding.keyBoard.inputButton6.setOnClickListener(v -> {
  519. if(!hasFocus){
  520. return;
  521. }
  522. int length = binding.editTextTextPersonName5.getText().length();
  523. if (length >= 16) {
  524. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  525. return;
  526. }
  527. int start = binding.editTextTextPersonName5.getSelectionStart();
  528. binding.editTextTextPersonName5.getText().insert(start, "6");
  529. });
  530. binding.keyBoard.inputButton7.setOnClickListener(v -> {
  531. if(!hasFocus){
  532. return;
  533. }
  534. int length = binding.editTextTextPersonName5.getText().length();
  535. if (length >= 16) {
  536. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  537. return;
  538. }
  539. int start = binding.editTextTextPersonName5.getSelectionStart();
  540. binding.editTextTextPersonName5.getText().insert(start, "7");
  541. });
  542. binding.keyBoard.inputButton8.setOnClickListener(v -> {
  543. if(!hasFocus){
  544. return;
  545. }
  546. int length = binding.editTextTextPersonName5.getText().length();
  547. if (length >= 16) {
  548. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  549. return;
  550. }
  551. int start = binding.editTextTextPersonName5.getSelectionStart();
  552. binding.editTextTextPersonName5.getText().insert(start, "8");
  553. });
  554. binding.keyBoard.inputButton9.setOnClickListener(v -> {
  555. if(!hasFocus){
  556. return;
  557. }
  558. int length = binding.editTextTextPersonName5.getText().length();
  559. if (length >= 16) {
  560. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  561. return;
  562. }
  563. int start = binding.editTextTextPersonName5.getSelectionStart();
  564. binding.editTextTextPersonName5.getText().insert(start, "9");
  565. });
  566. // todo:绑定字母按键
  567. binding.keyBoard.inputButtonQ.setOnClickListener(v -> {
  568. if(!hasFocus){
  569. return;
  570. }
  571. int length = binding.editTextTextPersonName5.getText().length();
  572. if (length >= 16) {
  573. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  574. return;
  575. }
  576. int start = binding.editTextTextPersonName5.getSelectionStart();
  577. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "Q" : "q");
  578. });
  579. binding.keyBoard.inputButtonW.setOnClickListener(v -> {
  580. if(!hasFocus){
  581. return;
  582. }
  583. int length = binding.editTextTextPersonName5.getText().length();
  584. if (length >= 16) {
  585. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  586. return;
  587. }
  588. int start = binding.editTextTextPersonName5.getSelectionStart();
  589. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "W" : "w");
  590. });
  591. binding.keyBoard.inputButtonE.setOnClickListener(v -> {
  592. if(!hasFocus){
  593. return;
  594. }
  595. int length = binding.editTextTextPersonName5.getText().length();
  596. if (length >= 16) {
  597. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  598. return;
  599. }
  600. int start = binding.editTextTextPersonName5.getSelectionStart();
  601. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "E" : "e");
  602. });
  603. binding.keyBoard.inputButtonR.setOnClickListener(v -> {
  604. if(!hasFocus){
  605. return;
  606. }
  607. int length = binding.editTextTextPersonName5.getText().length();
  608. if (length >= 16) {
  609. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  610. return;
  611. }
  612. int start = binding.editTextTextPersonName5.getSelectionStart();
  613. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "R" : "r");
  614. });
  615. binding.keyBoard.inputButtonT.setOnClickListener(v -> {
  616. if(!hasFocus){
  617. return;
  618. }
  619. int length = binding.editTextTextPersonName5.getText().length();
  620. if (length >= 16) {
  621. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  622. return;
  623. }
  624. int start = binding.editTextTextPersonName5.getSelectionStart();
  625. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "T" : "t");
  626. });
  627. binding.keyBoard.inputButtonY.setOnClickListener(v -> {
  628. if(!hasFocus){
  629. return;
  630. }
  631. int length = binding.editTextTextPersonName5.getText().length();
  632. if (length >= 16) {
  633. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  634. return;
  635. }
  636. int start = binding.editTextTextPersonName5.getSelectionStart();
  637. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "Y" : "y");
  638. });
  639. binding.keyBoard.inputButtonU.setOnClickListener(v -> {
  640. if(!hasFocus){
  641. return;
  642. }
  643. int length = binding.editTextTextPersonName5.getText().length();
  644. if (length >= 16) {
  645. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  646. return;
  647. }
  648. int start = binding.editTextTextPersonName5.getSelectionStart();
  649. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "U" : "u");
  650. });
  651. binding.keyBoard.inputButtonI.setOnClickListener(v -> {
  652. if(!hasFocus){
  653. return;
  654. }
  655. int length = binding.editTextTextPersonName5.getText().length();
  656. if (length >= 16) {
  657. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  658. return;
  659. }
  660. int start = binding.editTextTextPersonName5.getSelectionStart();
  661. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "I" : "i");
  662. });
  663. binding.keyBoard.inputButtonO.setOnClickListener(v -> {
  664. if(!hasFocus){
  665. return;
  666. }
  667. int length = binding.editTextTextPersonName5.getText().length();
  668. if (length >= 16) {
  669. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  670. return;
  671. }
  672. int start = binding.editTextTextPersonName5.getSelectionStart();
  673. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "O" : "o");
  674. });
  675. binding.keyBoard.inputButtonP.setOnClickListener(v -> {
  676. if(!hasFocus){
  677. return;
  678. }
  679. int length = binding.editTextTextPersonName5.getText().length();
  680. if (length >= 16) {
  681. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  682. return;
  683. }
  684. int start = binding.editTextTextPersonName5.getSelectionStart();
  685. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "P" : "p");
  686. });
  687. binding.keyBoard.inputButtonA.setOnClickListener(v -> {
  688. if(!hasFocus){
  689. return;
  690. }
  691. int length = binding.editTextTextPersonName5.getText().length();
  692. if (length >= 16) {
  693. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  694. return;
  695. }
  696. int start = binding.editTextTextPersonName5.getSelectionStart();
  697. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "A" : "a");
  698. });
  699. binding.keyBoard.inputButtonS.setOnClickListener(v -> {
  700. if(!hasFocus){
  701. return;
  702. }
  703. int length = binding.editTextTextPersonName5.getText().length();
  704. if (length >= 16) {
  705. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  706. return;
  707. }
  708. int start = binding.editTextTextPersonName5.getSelectionStart();
  709. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "S" : "s");
  710. });
  711. binding.keyBoard.inputButtonD.setOnClickListener(v -> {
  712. if(!hasFocus){
  713. return;
  714. }
  715. int length = binding.editTextTextPersonName5.getText().length();
  716. if (length >= 16) {
  717. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  718. return;
  719. }
  720. int start = binding.editTextTextPersonName5.getSelectionStart();
  721. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "D" : "d");
  722. });
  723. binding.keyBoard.inputButtonF.setOnClickListener(v -> {
  724. if(!hasFocus){
  725. return;
  726. }
  727. int length = binding.editTextTextPersonName5.getText().length();
  728. if (length >= 16) {
  729. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  730. return;
  731. }
  732. int start = binding.editTextTextPersonName5.getSelectionStart();
  733. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "F" : "f");
  734. });
  735. binding.keyBoard.inputButtonG.setOnClickListener(v -> {
  736. if(!hasFocus){
  737. return;
  738. }
  739. int length = binding.editTextTextPersonName5.getText().length();
  740. if (length >= 16) {
  741. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  742. return;
  743. }
  744. int start = binding.editTextTextPersonName5.getSelectionStart();
  745. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "G" : "g");
  746. });
  747. binding.keyBoard.inputButtonH.setOnClickListener(v -> {
  748. if(!hasFocus){
  749. return;
  750. }
  751. int length = binding.editTextTextPersonName5.getText().length();
  752. if (length >= 16) {
  753. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  754. return;
  755. }
  756. int start = binding.editTextTextPersonName5.getSelectionStart();
  757. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "H" : "h");
  758. });
  759. binding.keyBoard.inputButtonJ.setOnClickListener(v -> {
  760. if(!hasFocus){
  761. return;
  762. }
  763. int length = binding.editTextTextPersonName5.getText().length();
  764. if (length >= 16) {
  765. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  766. return;
  767. }
  768. int start = binding.editTextTextPersonName5.getSelectionStart();
  769. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "J" : "j");
  770. });
  771. binding.keyBoard.inputButtonK.setOnClickListener(v -> {
  772. if(!hasFocus){
  773. return;
  774. }
  775. int length = binding.editTextTextPersonName5.getText().length();
  776. if (length >= 16) {
  777. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  778. return;
  779. }
  780. int start = binding.editTextTextPersonName5.getSelectionStart();
  781. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "K" : "k");
  782. });
  783. binding.keyBoard.inputButtonL.setOnClickListener(v -> {
  784. if(!hasFocus){
  785. return;
  786. }
  787. int length = binding.editTextTextPersonName5.getText().length();
  788. if (length >= 16) {
  789. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  790. return;
  791. }
  792. int start = binding.editTextTextPersonName5.getSelectionStart();
  793. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "L" : "l");
  794. });
  795. binding.keyBoard.inputButtonZ.setOnClickListener(v -> {
  796. if(!hasFocus){
  797. return;
  798. }
  799. int length = binding.editTextTextPersonName5.getText().length();
  800. if (length >= 16) {
  801. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  802. return;
  803. }
  804. int start = binding.editTextTextPersonName5.getSelectionStart();
  805. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "Z" : "z");
  806. });
  807. binding.keyBoard.inputButtonX.setOnClickListener(v -> {
  808. if(!hasFocus){
  809. return;
  810. }
  811. int length = binding.editTextTextPersonName5.getText().length();
  812. if (length >= 16) {
  813. ToastUtils.make(getContext(), "密码最多不能超过16位!");
  814. return;
  815. }
  816. int start = binding.editTextTextPersonName5.getSelectionStart();
  817. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "X" : "x");
  818. });
  819. binding.keyBoard.inputButtonC.setOnClickListener(v -> {
  820. if(!hasFocus){
  821. return;
  822. }
  823. int length = binding.editTextTextPersonName5.getText().length();
  824. if (length >= 16) {
  825. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  826. return;
  827. }
  828. int start = binding.editTextTextPersonName5.getSelectionStart();
  829. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "C" : "c");
  830. });
  831. binding.keyBoard.inputButtonV.setOnClickListener(v -> {
  832. if(!hasFocus){
  833. return;
  834. }
  835. int length = binding.editTextTextPersonName5.getText().length();
  836. if (length >= 16) {
  837. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  838. return;
  839. }
  840. int start = binding.editTextTextPersonName5.getSelectionStart();
  841. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "V" : "v");
  842. });
  843. binding.keyBoard.inputButtonB.setOnClickListener(v -> {
  844. if(!hasFocus){
  845. return;
  846. }
  847. int length = binding.editTextTextPersonName5.getText().length();
  848. if (length >= 16) {
  849. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  850. return;
  851. }
  852. int start = binding.editTextTextPersonName5.getSelectionStart();
  853. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "B" : "b");
  854. });
  855. binding.keyBoard.inputButtonN.setOnClickListener(v -> {
  856. if(!hasFocus){
  857. return;
  858. }
  859. int length = binding.editTextTextPersonName5.getText().length();
  860. if (length >= 16) {
  861. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  862. return;
  863. }
  864. int start = binding.editTextTextPersonName5.getSelectionStart();
  865. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "N" : "n");
  866. });
  867. binding.keyBoard.inputButtonM.setOnClickListener(v -> {
  868. if(!hasFocus){
  869. return;
  870. }
  871. int length = binding.editTextTextPersonName5.getText().length();
  872. if (length >= 16) {
  873. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  874. return;
  875. }
  876. int start = binding.editTextTextPersonName5.getSelectionStart();
  877. binding.editTextTextPersonName5.getText().insert(start, caseSmallFlag.get() ? "M" : "m");
  878. });
  879. // 符号
  880. binding.keyBoard.symbolButton1.setOnClickListener(v -> {
  881. if(!hasFocus){
  882. return;
  883. }
  884. int length = binding.editTextTextPersonName5.getText().length();
  885. if (length >= 16) {
  886. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  887. return;
  888. }
  889. int start = binding.editTextTextPersonName5.getSelectionStart();
  890. binding.editTextTextPersonName5.getText().insert(start, "-");
  891. });
  892. binding.keyBoard.symbolButton2.setOnClickListener(v -> {
  893. if(!hasFocus){
  894. return;
  895. }
  896. int length = binding.editTextTextPersonName5.getText().length();
  897. if (length >= 16) {
  898. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  899. return;
  900. }
  901. int start = binding.editTextTextPersonName5.getSelectionStart();
  902. binding.editTextTextPersonName5.getText().insert(start, "/");
  903. });
  904. binding.keyBoard.symbolButton3.setOnClickListener(v -> {
  905. if(!hasFocus){
  906. return;
  907. }
  908. int length = binding.editTextTextPersonName5.getText().length();
  909. if (length >= 16) {
  910. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  911. return;
  912. }
  913. int start = binding.editTextTextPersonName5.getSelectionStart();
  914. binding.editTextTextPersonName5.getText().insert(start, ":");
  915. });
  916. binding.keyBoard.symbolButton4.setOnClickListener(v -> {
  917. if(!hasFocus){
  918. return;
  919. }
  920. int length = binding.editTextTextPersonName5.getText().length();
  921. if (length >= 16) {
  922. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  923. return;
  924. }
  925. int start = binding.editTextTextPersonName5.getSelectionStart();
  926. binding.editTextTextPersonName5.getText().insert(start, "+");
  927. });
  928. binding.keyBoard.symbolButton5.setOnClickListener(v -> {
  929. if(!hasFocus){
  930. return;
  931. }
  932. int length = binding.editTextTextPersonName5.getText().length();
  933. if (length >= 16) {
  934. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  935. return;
  936. }
  937. int start = binding.editTextTextPersonName5.getSelectionStart();
  938. binding.editTextTextPersonName5.getText().insert(start, "(");
  939. });
  940. binding.keyBoard.symbolButton6.setOnClickListener(v -> {
  941. if(!hasFocus){
  942. return;
  943. }
  944. int length = binding.editTextTextPersonName5.getText().length();
  945. if (length >= 16) {
  946. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  947. return;
  948. }
  949. int start = binding.editTextTextPersonName5.getSelectionStart();
  950. binding.editTextTextPersonName5.getText().insert(start, ")");
  951. });
  952. binding.keyBoard.symbolButton7.setOnClickListener(v -> {
  953. if(!hasFocus){
  954. return;
  955. }
  956. int length = binding.editTextTextPersonName5.getText().length();
  957. if (length >= 16) {
  958. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  959. return;
  960. }
  961. int start = binding.editTextTextPersonName5.getSelectionStart();
  962. binding.editTextTextPersonName5.getText().insert(start, "#");
  963. });
  964. binding.keyBoard.symbolButton8.setOnClickListener(v -> {
  965. if(!hasFocus){
  966. return;
  967. }
  968. int length = binding.editTextTextPersonName5.getText().length();
  969. if (length >= 16) {
  970. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  971. return;
  972. }
  973. int start = binding.editTextTextPersonName5.getSelectionStart();
  974. binding.editTextTextPersonName5.getText().insert(start, "@");
  975. });
  976. binding.keyBoard.symbolButton9.setOnClickListener(v -> {
  977. if(!hasFocus){
  978. return;
  979. }
  980. int length = binding.editTextTextPersonName5.getText().length();
  981. if (length >= 16) {
  982. ToastUtils.make(getContext(), "密码最多不能超过16位! ");
  983. return;
  984. }
  985. int start = binding.editTextTextPersonName5.getSelectionStart();
  986. binding.editTextTextPersonName5.getText().insert(start, ".");
  987. });
  988. binding.keyBoard.symbolButton10.setOnClickListener(v -> {
  989. if(!hasFocus){
  990. return;
  991. }
  992. int length = binding.editTextTextPersonName5.getText().length();
  993. if (length >= 16) {
  994. ToastUtils.make(getContext(), "?");
  995. return;
  996. }
  997. int start = binding.editTextTextPersonName5.getSelectionStart();
  998. binding.editTextTextPersonName5.getText().insert(start, "!");
  999. });
  1000. // 大小写按键绑定 默认大写
  1001. binding.keyBoard.inputButtonCaseSmall.setOnClickListener(v -> {
  1002. if (caseSmallFlag.get()) {
  1003. caseSmallFlag.set(false);
  1004. } else {
  1005. caseSmallFlag.set(true);
  1006. }
  1007. binding.keyBoard.inputButtonCaseSmall.setText(caseSmallFlag.get() ? "大写" : "小写");
  1008. // 设置键盘字母大小写
  1009. binding.keyBoard.inputButtonQ.setText(caseSmallFlag.get() ? "Q" : "q");
  1010. binding.keyBoard.inputButtonW.setText(caseSmallFlag.get() ? "W" : "w");
  1011. binding.keyBoard.inputButtonE.setText(caseSmallFlag.get() ? "E" : "e");
  1012. binding.keyBoard.inputButtonR.setText(caseSmallFlag.get() ? "R" : "r");
  1013. binding.keyBoard.inputButtonT.setText(caseSmallFlag.get() ? "T" : "t");
  1014. binding.keyBoard.inputButtonY.setText(caseSmallFlag.get() ? "Y" : "y");
  1015. binding.keyBoard.inputButtonU.setText(caseSmallFlag.get() ? "U" : "u");
  1016. binding.keyBoard.inputButtonI.setText(caseSmallFlag.get() ? "I" : "i");
  1017. binding.keyBoard.inputButtonO.setText(caseSmallFlag.get() ? "O" : "o");
  1018. binding.keyBoard.inputButtonP.setText(caseSmallFlag.get() ? "P" : "p");
  1019. binding.keyBoard.inputButtonA.setText(caseSmallFlag.get() ? "A" : "a");
  1020. binding.keyBoard.inputButtonS.setText(caseSmallFlag.get() ? "S" : "s");
  1021. binding.keyBoard.inputButtonD.setText(caseSmallFlag.get() ? "D" : "d");
  1022. binding.keyBoard.inputButtonF.setText(caseSmallFlag.get() ? "F" : "f");
  1023. binding.keyBoard.inputButtonG.setText(caseSmallFlag.get() ? "G" : "g");
  1024. binding.keyBoard.inputButtonH.setText(caseSmallFlag.get() ? "H" : "h");
  1025. binding.keyBoard.inputButtonJ.setText(caseSmallFlag.get() ? "J" : "j");
  1026. binding.keyBoard.inputButtonK.setText(caseSmallFlag.get() ? "K" : "k");
  1027. binding.keyBoard.inputButtonL.setText(caseSmallFlag.get() ? "L" : "l");
  1028. binding.keyBoard.inputButtonZ.setText(caseSmallFlag.get() ? "Z" : "z");
  1029. binding.keyBoard.inputButtonX.setText(caseSmallFlag.get() ? "X" : "x");
  1030. binding.keyBoard.inputButtonC.setText(caseSmallFlag.get() ? "C" : "c");
  1031. binding.keyBoard.inputButtonV.setText(caseSmallFlag.get() ? "V" : "v");
  1032. binding.keyBoard.inputButtonB.setText(caseSmallFlag.get() ? "B" : "b");
  1033. binding.keyBoard.inputButtonN.setText(caseSmallFlag.get() ? "N" : "n");
  1034. binding.keyBoard.inputButtonM.setText(caseSmallFlag.get() ? "M" : "m");
  1035. });
  1036. binding.keyBoard.inputButtonCancel.setOnClickListener(v -> {
  1037. Editable text = binding.editTextTextPersonName5.getText();
  1038. int start = binding.editTextTextPersonName5.getSelectionStart();
  1039. if (text.length() > 0) {
  1040. if (start > 0) {
  1041. text.delete(start - 1, start);
  1042. }
  1043. binding.editTextTextPersonName5.setText(text, TextView.BufferType.EDITABLE);
  1044. binding.editTextTextPersonName5.setSelection(start - 1 < 0 ? text.length() : start - 1);
  1045. }
  1046. });
  1047. // 长按删除
  1048. binding.keyBoard.inputButtonCancel.setOnLongClickListener(v -> {
  1049. binding.editTextTextPersonName5.getText().clear();
  1050. return false;
  1051. });
  1052. });
  1053. binding.returnBtn.setOnClickListener(view1 -> {
  1054. if (ButtonUtils.isFastClick()) {
  1055. return;
  1056. }
  1057. if (null != timer) {
  1058. timer.cancel();
  1059. }
  1060. NavUtils.navigate(this, R.id.action_sendFragment_to_mainFragment);
  1061. });
  1062. // 默认选中密码输入
  1063. if (!StringUtils.isNullOrEmpty(binding.editTextTextPersonName4.getText().toString())) {
  1064. binding.editTextTextPersonName5.requestFocus();
  1065. } else {
  1066. binding.editTextTextPersonName4.requestFocus();
  1067. }
  1068. }
  1069. /**
  1070. * 隐藏部分信息
  1071. *
  1072. * @param loginPhone 投递员手机号
  1073. * @return 隐藏后的手机号
  1074. */
  1075. private String toHidePhone(String loginPhone) {
  1076. StringBuilder stringBuilder = new StringBuilder();
  1077. char[] chars = loginPhone.toCharArray();
  1078. for (int i = 0; i < chars.length; i++) {
  1079. if (i > 2 && i < 8) {
  1080. stringBuilder.append('*');
  1081. } else {
  1082. stringBuilder.append(chars[i]);
  1083. }
  1084. }
  1085. return stringBuilder.toString();
  1086. }
  1087. @Override
  1088. public void onDestroyView() {
  1089. if (timer != null) {
  1090. timer.cancel();
  1091. timer = null;
  1092. }
  1093. super.onDestroyView();
  1094. binding = null;
  1095. Log.i(TAG, TAG + "被销毁。。。");
  1096. }
  1097. }