SendKeyBoardFragment.java 60 KB

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