1
0

SendKeyBoardFragment.java 60 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148
  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).setX(140);
  83. view.findViewById(R.id.editTextTextPersonName4).setX(140);
  84. view.findViewById(R.id.editTextTextPersonName5).setX(140);
  85. view.findViewById(R.id.button_confirm).setX(140);
  86. }
  87. } catch (Exception e) {
  88. Log.e(TAG, "onViewCreated: 配置登录手机号出错! ", e);
  89. LoggingUtils.sendErrorLog("业务异常: 配置登录手机号出错! ", e);
  90. }
  91. if (!StringUtils.isNullOrEmpty(loginPhone) && "store".equals(loginType)) {
  92. String loginPhoneShow = toHidePhone(loginPhone);
  93. binding.editTextTextPersonName4.setText(loginPhoneShow);
  94. binding.editTextTextPersonName4.setEnabled(false);
  95. } else {
  96. // 4 手机
  97. binding.editTextTextPersonName4.setOnFocusChangeListener((view1, hasFocus) -> {
  98. if (hasFocus) {
  99. binding.keyBoard.inputButton0.setOnClickListener(v -> {
  100. int length = binding.editTextTextPersonName4.getText().length();
  101. if (length >= 11) {
  102. ToastUtils.make(getContext(), "手机号不能超过11位! ");
  103. return;
  104. }
  105. int start = binding.editTextTextPersonName4.getSelectionStart();
  106. binding.editTextTextPersonName4.getText().insert(start, "0");
  107. });
  108. binding.keyBoard.inputButton1.setOnClickListener(v -> {
  109. int length = binding.editTextTextPersonName4.getText().length();
  110. if (length >= 11) {
  111. ToastUtils.make(getContext(), "手机号不能超过11位! ");
  112. return;
  113. }
  114. int start = binding.editTextTextPersonName4.getSelectionStart();
  115. binding.editTextTextPersonName4.getText().insert(start, "1");
  116. });
  117. binding.keyBoard.inputButton2.setOnClickListener(v -> {
  118. int length = binding.editTextTextPersonName4.getText().length();
  119. if (length >= 11) {
  120. ToastUtils.make(getContext(), "手机号不能超过11位! ");
  121. return;
  122. }
  123. int start = binding.editTextTextPersonName4.getSelectionStart();
  124. binding.editTextTextPersonName4.getText().insert(start, "2");
  125. });
  126. binding.keyBoard.inputButton3.setOnClickListener(v -> {
  127. int length = binding.editTextTextPersonName4.getText().length();
  128. if (length >= 11) {
  129. ToastUtils.make(getContext(), "手机号不能超过11位! ");
  130. return;
  131. }
  132. int start = binding.editTextTextPersonName4.getSelectionStart();
  133. binding.editTextTextPersonName4.getText().insert(start, "3");
  134. });
  135. binding.keyBoard.inputButton4.setOnClickListener(v -> {
  136. int length = binding.editTextTextPersonName4.getText().length();
  137. if (length >= 11) {
  138. ToastUtils.make(getContext(), "手机号不能超过11位! ");
  139. return;
  140. }
  141. int start = binding.editTextTextPersonName4.getSelectionStart();
  142. binding.editTextTextPersonName4.getText().insert(start, "4");
  143. });
  144. binding.keyBoard.inputButton5.setOnClickListener(v -> {
  145. int length = binding.editTextTextPersonName4.getText().length();
  146. if (length >= 11) {
  147. ToastUtils.make(getContext(), "手机号不能超过11位! ");
  148. return;
  149. }
  150. int start = binding.editTextTextPersonName4.getSelectionStart();
  151. binding.editTextTextPersonName4.getText().insert(start, "5");
  152. });
  153. binding.keyBoard.inputButton6.setOnClickListener(v -> {
  154. int length = binding.editTextTextPersonName4.getText().length();
  155. if (length >= 11) {
  156. ToastUtils.make(getContext(), "手机号不能超过11位! ");
  157. return;
  158. }
  159. int start = binding.editTextTextPersonName4.getSelectionStart();
  160. binding.editTextTextPersonName4.getText().insert(start, "6");
  161. });
  162. binding.keyBoard.inputButton7.setOnClickListener(v -> {
  163. int length = binding.editTextTextPersonName4.getText().length();
  164. if (length >= 11) {
  165. ToastUtils.make(getContext(), "手机号不能超过11位! ");
  166. return;
  167. }
  168. int start = binding.editTextTextPersonName4.getSelectionStart();
  169. binding.editTextTextPersonName4.getText().insert(start, "7");
  170. });
  171. binding.keyBoard.inputButton8.setOnClickListener(v -> {
  172. int length = binding.editTextTextPersonName4.getText().length();
  173. if (length >= 11) {
  174. ToastUtils.make(getContext(), "手机号不能超过11位! ");
  175. return;
  176. }
  177. int start = binding.editTextTextPersonName4.getSelectionStart();
  178. binding.editTextTextPersonName4.getText().insert(start, "8");
  179. });
  180. binding.keyBoard.inputButton9.setOnClickListener(v -> {
  181. int length = binding.editTextTextPersonName4.getText().length();
  182. if (length >= 11) {
  183. ToastUtils.make(getContext(), "手机号不能超过11位! ");
  184. return;
  185. }
  186. int start = binding.editTextTextPersonName4.getSelectionStart();
  187. binding.editTextTextPersonName4.getText().insert(start, "9");
  188. });
  189. binding.keyBoard.inputButtonCancel.setOnClickListener(v -> {
  190. Editable text = binding.editTextTextPersonName4.getText();
  191. int start = binding.editTextTextPersonName4.getSelectionStart();
  192. if (text.length() > 0) {
  193. if (start > 0) {
  194. text.delete(start - 1, start);
  195. }
  196. binding.editTextTextPersonName4.setText(text, TextView.BufferType.EDITABLE);
  197. binding.editTextTextPersonName4.setSelection(start - 1 < 0 ? text.length() : start - 1);
  198. }
  199. });
  200. // 长按删除
  201. binding.keyBoard.inputButtonCancel.setOnLongClickListener(v -> {
  202. binding.editTextTextPersonName4.getText().clear();
  203. return false;
  204. });
  205. }
  206. });
  207. }
  208. String finalLoginPhone = loginPhone;
  209. String finalLoginType = loginType;
  210. binding.keyBoard.inputButtonConfirm.setOnClickListener(view1 -> {
  211. if (ButtonUtils.isFastClick()) {
  212. return;
  213. }
  214. // 登录逻辑 editTextTextPersonName4 手机 editTextTextPersonName5 密码
  215. String sendPhone = "";
  216. if ("courier".equals(finalLoginType) || "collect".equals(finalLoginType)){
  217. sendPhone = binding.editTextTextPersonName4.getText().toString();
  218. }else {
  219. sendPhone = !StringUtils.isNullOrEmpty(finalLoginPhone) ? finalLoginPhone : binding.editTextTextPersonName4.getText().toString();
  220. }
  221. String password = binding.editTextTextPersonName5.getText().toString();
  222. 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}$");
  223. Pattern pwdPattern = Pattern.compile("^[0-9]{8,16}$");
  224. if (phonePattern.matcher(sendPhone).matches() && pwdPattern.matcher(password).matches()) {
  225. String finalSendPhone = sendPhone;
  226. ICSPClient.login(sendPhone, password, new Callback() {
  227. @Override
  228. public void onFailure(@NotNull Call call, @NotNull IOException e) {
  229. // TODO 登录失败处理
  230. ToastUtils.make(getContext(), "登录失败!网络异常!");
  231. Log.e(TAG, "onFailure: 登录失败! call: " + call.timeout().toString(), e);
  232. LoggingUtils.sendErrorLog("业务异常: 登录失败!网络异常! ", e);
  233. }
  234. @Override
  235. public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
  236. ((MainActivity) getActivity()).runOnUiThread(() -> {
  237. String responseStr = ICSPClient.isSuccessfulAndParseResponse(response);
  238. if (!StringUtils.isNullOrEmpty(responseStr)) {
  239. try {
  240. ResponseData<ResponseTokenVo> responseData = JacksonUtils.objectmapper.readValue(responseStr, new TypeReference<ResponseData<ResponseTokenVo>>() {
  241. });
  242. ResponseTokenVo data = responseData.getData();
  243. if (responseData.getCode().equals(ICSPConstant.OK)) {
  244. LocalStorage.Session session = new LocalStorage.Session();
  245. session.setPhone(finalSendPhone);
  246. session.setTime(System.currentTimeMillis());
  247. session.setToken(data.getToken());
  248. MainActivity activity = (MainActivity) getActivity();
  249. String pageType = activity.getBundleMap().get(MainFragment.class.getName()).getString("pageType");
  250. String loginType = activity.getBundleMap().get(CourierFragment.class.getName()).getString("loginType");
  251. LocalStorage.getInstance().cleanSession(activity,false);
  252. LocalStorage.getInstance().setSession(session);
  253. Bundle pageTypeBundle = new Bundle();
  254. pageTypeBundle.putString("pageType",pageType);
  255. activity.getBundleMap().put(MainFragment.class.getName(), pageTypeBundle);
  256. Bundle loginTypeBundle = new Bundle();
  257. loginTypeBundle.putString("loginType",loginType);
  258. activity.getBundleMap().put(CourierFragment.class.getName(), loginTypeBundle);
  259. // 登录成功
  260. ToastUtils.make(getContext(), "登录成功!");
  261. if (null != timer) {
  262. timer.cancel();
  263. }
  264. if ("store".equals(finalLoginType) || "courier".equals(finalLoginType)){
  265. Bundle isPayBundle = new Bundle();
  266. isPayBundle.putString("isPay",data.getIsPay());
  267. isPayBundle.putString("payAmount",data.getPayAmount().toString());
  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. }