CollectMaterialsFragment.java 38 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848
  1. package com.emato.ich.fragment;
  2. import android.os.Bundle;
  3. import android.os.CountDownTimer;
  4. import android.text.Editable;
  5. import android.text.InputType;
  6. import android.view.LayoutInflater;
  7. import android.view.View;
  8. import android.view.ViewGroup;
  9. import android.widget.TextView;
  10. import androidx.annotation.NonNull;
  11. import androidx.annotation.Nullable;
  12. import androidx.fragment.app.Fragment;
  13. import com.cherry.sdk.controller.utils.ScanGunKeyEventHelper;
  14. import com.emato.ich.MainActivity;
  15. import com.emato.ich.R;
  16. import com.emato.ich.api.ICSPClient;
  17. import com.emato.ich.contant.ICSPConstant;
  18. import com.emato.ich.contant.ScanGunConstant;
  19. import com.emato.ich.databinding.FragmentCollectMaterialsBinding;
  20. import com.emato.ich.entity.vo.ExpressSendOrderPickUpDto;
  21. import com.emato.ich.entity.vo.PreparedOrderResponseVo;
  22. import com.emato.ich.entity.vo.PreparedOrderVo;
  23. import com.emato.ich.entity.vo.ResponseData;
  24. import com.emato.ich.entity.vo.TakeParcelVo;
  25. import com.emato.ich.local.LocalStorage;
  26. import com.emato.ich.utils.BaseUtils;
  27. import com.emato.ich.utils.JacksonUtils;
  28. import com.emato.ich.utils.Log;
  29. import com.emato.ich.utils.LoggingUtils;
  30. import com.emato.ich.utils.NavUtils;
  31. import com.emato.ich.utils.StringUtils;
  32. import com.emato.ich.utils.TimeOutUtils;
  33. import com.emato.ich.utils.ToastUtils;
  34. import com.fasterxml.jackson.core.JsonProcessingException;
  35. import com.fasterxml.jackson.core.type.TypeReference;
  36. import com.fasterxml.jackson.databind.ObjectMapper;
  37. import org.jetbrains.annotations.NotNull;
  38. import java.io.IOException;
  39. import java.util.concurrent.atomic.AtomicBoolean;
  40. import java.util.concurrent.atomic.AtomicInteger;
  41. import java.util.regex.Matcher;
  42. import java.util.regex.Pattern;
  43. import okhttp3.Call;
  44. import okhttp3.Callback;
  45. import okhttp3.Response;
  46. /**
  47. * 输入投递信息
  48. */
  49. public class CollectMaterialsFragment extends Fragment {
  50. private static final String TAG = CollectMaterialsFragment.class.getName();
  51. private FragmentCollectMaterialsBinding binding;
  52. private PreparedOrderResponseVo data;
  53. private final AtomicInteger mailNoLock = new AtomicInteger(1);
  54. private final AtomicInteger submitLock = new AtomicInteger(1);
  55. private CountDownTimer timer;
  56. private long start;
  57. @Nullable
  58. @org.jetbrains.annotations.Nullable
  59. @Override
  60. public View onCreateView(@NonNull @NotNull LayoutInflater inflater, @Nullable @org.jetbrains.annotations.Nullable ViewGroup container, @Nullable @org.jetbrains.annotations.Nullable Bundle savedInstanceState) {
  61. start = System.currentTimeMillis();
  62. binding = FragmentCollectMaterialsBinding.inflate(inflater, container, false);
  63. return binding.getRoot();
  64. }
  65. public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
  66. long end = System.currentTimeMillis();
  67. Log.i(TAG, TAG + "页面渲染速度为" + (end - start) + "ms。");
  68. BaseUtils.disableEditText(binding.mailNo);
  69. try {
  70. MainActivity activity = (MainActivity) getActivity();
  71. timer = TimeOutUtils.timeout(activity, CollectMaterialsFragment.this, binding.timeout, 90);
  72. timer.start();
  73. } catch (Exception e) {
  74. Log.e(TAG, "onViewCreated: 倒计时出现异常! ", e);
  75. LoggingUtils.sendErrorLog("业务异常: 输入投递信息页面倒计时出现异常! ", e);
  76. }
  77. Bundle arguments = null;
  78. String sectionType = null;
  79. try {
  80. MainActivity activity = (MainActivity) getActivity();
  81. binding.mailNo.setInputType(InputType.TYPE_NULL);
  82. // 扫描枪监听 扫描运单号
  83. activity.scanGunKeyEventHelper = new ScanGunKeyEventHelper(s -> {
  84. // 扫码成功回调
  85. Log.d(TAG, "onScanSuccess: " + s);
  86. if (!StringUtils.isNullOrEmpty(s)) {
  87. for (String pattern : ScanGunConstant.getPatterns()) {
  88. Matcher matcher = Pattern.compile(pattern).matcher(s);
  89. if (!matcher.matches()) {
  90. ToastUtils.make(getContext(), "请将条形码置于扫码枪前! ");
  91. return;
  92. }
  93. }
  94. }
  95. if (mailNoLock.get() == 1) {
  96. // 禁用软件盘
  97. Editable text = binding.mailNo.getText();
  98. text.clear();
  99. binding.mailNo.setText(s);
  100. mailNoLock.incrementAndGet();
  101. }
  102. });
  103. } catch (RuntimeException e) {
  104. Log.e(TAG, "onViewCreated: InputInfoFragment页面获取ChooseCabinetFragment传值错误! ", e);
  105. LoggingUtils.sendErrorLog("业务异常: InputInfoFragment页面获取ChooseCabinetFragment传值错误! ", e);
  106. }
  107. // TODO 离线逻辑, 暂时不做
  108. if (submitLock.get() == 1) {
  109. submitLock.incrementAndGet();
  110. binding.keyBoard.inputButtonConfirm.setOnClickListener(view1 -> {
  111. Bundle bundle = new Bundle();
  112. String mailNo = binding.mailNo.getText().toString();
  113. // String phone = binding.delivererPhone.getText().toString();
  114. if (StringUtils.isNullOrEmpty(mailNo)) {
  115. ToastUtils.make(getContext(), "运单号不能为空!请扫描运单号!");
  116. } else {
  117. // todo:调用揽件接口,使用运单号开门
  118. ExpressSendOrderPickUpDto expressSendOrderPickUpDto = new ExpressSendOrderPickUpDto();
  119. expressSendOrderPickUpDto.setExprSn(mailNo);
  120. expressSendOrderPickUpDto.setCabSn(BaseUtils.getClientId());
  121. ICSPClient.takeParcelByExpressNo(LocalStorage.getInstance().getSession().getToken(), expressSendOrderPickUpDto, new Callback() {
  122. @Override
  123. public void onFailure(@NotNull Call call, @NotNull IOException e) {
  124. // TODO 取件接口请求失败逻辑处理
  125. ToastUtils.make(getContext(), "取件失败!网络异常!");
  126. Log.e(TAG, "onFailure: 取件请求失败!", e);
  127. LoggingUtils.sendErrorLog("业务异常: 取件请求失败! 网络异常! ", e);
  128. }
  129. @Override
  130. public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
  131. // TODO 返回锁板和锁id, 开柜门
  132. getActivity().runOnUiThread(() -> {
  133. String parseResponse = ICSPClient.isSuccessfulAndParseResponse(response);
  134. if (!StringUtils.isNullOrEmpty(parseResponse)) {
  135. try {
  136. ObjectMapper objectMapper = JacksonUtils.objectmapper;
  137. ResponseData<PreparedOrderResponseVo> responseData = null;
  138. try {
  139. responseData = objectMapper.readValue(parseResponse, new TypeReference<ResponseData<PreparedOrderResponseVo>>() {
  140. });
  141. ToastUtils.make(getContext(), responseData.getMsg());
  142. } catch (JsonProcessingException e) {
  143. Log.e(TAG, "onResponse: 解析取件开门响应信息失败! ", e);
  144. LoggingUtils.sendErrorLog("业务异常: 解析取件开门响应信息失败! ", e);
  145. } catch (RuntimeException e) {
  146. Log.e(TAG, "onResponse: 未知错误! ", e);
  147. ToastUtils.make(getContext(), "未知错误!");
  148. LoggingUtils.sendErrorLog("业务异常: 解析取件开门响应信息失败! 未知错误! ", e);
  149. }
  150. if (null != responseData && responseData.getCode().equals(ICSPConstant.OK)) {
  151. // 开门
  152. Log.i(TAG, "onResponse: 取件成功! ");
  153. ToastUtils.make(getContext(), "取件成功!");
  154. Bundle bundle = new Bundle();
  155. bundle.putString("mailNo", mailNo);
  156. bundle.putString("pickUp", responseData.getData().getPickUp());
  157. bundle.putString("takeCabinetNo", responseData.getData().getLockerName());
  158. ((MainActivity) getActivity()).getBundleMap().put(ExpressSendOrderPickUpDto.class.getName(), bundle);
  159. if (null != timer) {
  160. timer.cancel();
  161. }
  162. NavUtils.navigate(CollectMaterialsFragment.this, R.id.action_collectMaterialsFragment_to_takeSuccessFragment);
  163. }
  164. } catch (RuntimeException e) {
  165. Log.e(TAG, "onResponse: 取件失败! ", e);
  166. ToastUtils.make(getContext(), "取件失败!");
  167. LoggingUtils.sendErrorLog("业务异常: 取件失败! ", e);
  168. }
  169. } else {
  170. ToastUtils.make(getContext(), "服务器异常! 请稍后重试!");
  171. }
  172. });
  173. }
  174. });
  175. }
  176. });
  177. }
  178. // 数字输入 5 手机号 4 面单号
  179. binding.mailNo.setOnFocusChangeListener((view1, hasFocus) -> {
  180. AtomicBoolean caseSmallFlag = new AtomicBoolean(true);
  181. binding.keyBoard.inputButton0.setOnClickListener(v -> {
  182. if(!hasFocus){
  183. return;
  184. }
  185. int length = binding.mailNo.getText().length();
  186. if (length >= 16) {
  187. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  188. return;
  189. }
  190. int start = binding.mailNo.getSelectionStart();
  191. binding.mailNo.getText().insert(start, "0");
  192. });
  193. binding.keyBoard.inputButton1.setOnClickListener(v -> {
  194. if(!hasFocus){
  195. return;
  196. }
  197. int length = binding.mailNo.getText().length();
  198. if (length >= 16) {
  199. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  200. return;
  201. }
  202. int start = binding.mailNo.getSelectionStart();
  203. binding.mailNo.getText().insert(start, "1");
  204. });
  205. binding.keyBoard.inputButton2.setOnClickListener(v -> {
  206. if(!hasFocus){
  207. return;
  208. }
  209. int length = binding.mailNo.getText().length();
  210. if (length >= 16) {
  211. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  212. return;
  213. }
  214. int start = binding.mailNo.getSelectionStart();
  215. binding.mailNo.getText().insert(start, "2");
  216. });
  217. binding.keyBoard.inputButton3.setOnClickListener(v -> {
  218. if(!hasFocus){
  219. return;
  220. }
  221. int length = binding.mailNo.getText().length();
  222. if (length >= 16) {
  223. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  224. return;
  225. }
  226. int start = binding.mailNo.getSelectionStart();
  227. binding.mailNo.getText().insert(start, "3");
  228. });
  229. binding.keyBoard.inputButton4.setOnClickListener(v -> {
  230. if(!hasFocus){
  231. return;
  232. }
  233. int length = binding.mailNo.getText().length();
  234. if (length >= 16) {
  235. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  236. return;
  237. }
  238. int start = binding.mailNo.getSelectionStart();
  239. binding.mailNo.getText().insert(start, "4");
  240. });
  241. binding.keyBoard.inputButton5.setOnClickListener(v -> {
  242. if(!hasFocus){
  243. return;
  244. }
  245. int length = binding.mailNo.getText().length();
  246. if (length >= 16) {
  247. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  248. return;
  249. }
  250. int start = binding.mailNo.getSelectionStart();
  251. binding.mailNo.getText().insert(start, "5");
  252. });
  253. binding.keyBoard.inputButton6.setOnClickListener(v -> {
  254. if(!hasFocus){
  255. return;
  256. }
  257. int length = binding.mailNo.getText().length();
  258. if (length >= 16) {
  259. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  260. return;
  261. }
  262. int start = binding.mailNo.getSelectionStart();
  263. binding.mailNo.getText().insert(start, "6");
  264. });
  265. binding.keyBoard.inputButton7.setOnClickListener(v -> {
  266. if(!hasFocus){
  267. return;
  268. }
  269. int length = binding.mailNo.getText().length();
  270. if (length >= 16) {
  271. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  272. return;
  273. }
  274. int start = binding.mailNo.getSelectionStart();
  275. binding.mailNo.getText().insert(start, "7");
  276. });
  277. binding.keyBoard.inputButton8.setOnClickListener(v -> {
  278. if(!hasFocus){
  279. return;
  280. }
  281. int length = binding.mailNo.getText().length();
  282. if (length >= 16) {
  283. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  284. return;
  285. }
  286. int start = binding.mailNo.getSelectionStart();
  287. binding.mailNo.getText().insert(start, "8");
  288. });
  289. binding.keyBoard.inputButton9.setOnClickListener(v -> {
  290. if(!hasFocus){
  291. return;
  292. }
  293. int length = binding.mailNo.getText().length();
  294. if (length >= 16) {
  295. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  296. return;
  297. }
  298. int start = binding.mailNo.getSelectionStart();
  299. binding.mailNo.getText().insert(start, "9");
  300. });
  301. // todo:绑定字母按键
  302. binding.keyBoard.inputButtonQ.setOnClickListener(v -> {
  303. if(!hasFocus){
  304. return;
  305. }
  306. int length = binding.mailNo.getText().length();
  307. if (length >= 16) {
  308. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  309. return;
  310. }
  311. int start = binding.mailNo.getSelectionStart();
  312. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "Q" : "q");
  313. });
  314. binding.keyBoard.inputButtonW.setOnClickListener(v -> {
  315. if(!hasFocus){
  316. return;
  317. }
  318. int length = binding.mailNo.getText().length();
  319. if (length >= 16) {
  320. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  321. return;
  322. }
  323. int start = binding.mailNo.getSelectionStart();
  324. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "W" : "w");
  325. });
  326. binding.keyBoard.inputButtonE.setOnClickListener(v -> {
  327. if(!hasFocus){
  328. return;
  329. }
  330. int length = binding.mailNo.getText().length();
  331. if (length >= 16) {
  332. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  333. return;
  334. }
  335. int start = binding.mailNo.getSelectionStart();
  336. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "E" : "e");
  337. });
  338. binding.keyBoard.inputButtonR.setOnClickListener(v -> {
  339. if(!hasFocus){
  340. return;
  341. }
  342. int length = binding.mailNo.getText().length();
  343. if (length >= 16) {
  344. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  345. return;
  346. }
  347. int start = binding.mailNo.getSelectionStart();
  348. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "R" : "r");
  349. });
  350. binding.keyBoard.inputButtonT.setOnClickListener(v -> {
  351. if(!hasFocus){
  352. return;
  353. }
  354. int length = binding.mailNo.getText().length();
  355. if (length >= 16) {
  356. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  357. return;
  358. }
  359. int start = binding.mailNo.getSelectionStart();
  360. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "T" : "t");
  361. });
  362. binding.keyBoard.inputButtonY.setOnClickListener(v -> {
  363. if(!hasFocus){
  364. return;
  365. }
  366. int length = binding.mailNo.getText().length();
  367. if (length >= 16) {
  368. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  369. return;
  370. }
  371. int start = binding.mailNo.getSelectionStart();
  372. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "Y" : "y");
  373. });
  374. binding.keyBoard.inputButtonU.setOnClickListener(v -> {
  375. if(!hasFocus){
  376. return;
  377. }
  378. int length = binding.mailNo.getText().length();
  379. if (length >= 16) {
  380. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  381. return;
  382. }
  383. int start = binding.mailNo.getSelectionStart();
  384. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "U" : "u");
  385. });
  386. binding.keyBoard.inputButtonI.setOnClickListener(v -> {
  387. if(!hasFocus){
  388. return;
  389. }
  390. int length = binding.mailNo.getText().length();
  391. if (length >= 16) {
  392. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  393. return;
  394. }
  395. int start = binding.mailNo.getSelectionStart();
  396. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "I" : "i");
  397. });
  398. binding.keyBoard.inputButtonO.setOnClickListener(v -> {
  399. if(!hasFocus){
  400. return;
  401. }
  402. int length = binding.mailNo.getText().length();
  403. if (length >= 16) {
  404. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  405. return;
  406. }
  407. int start = binding.mailNo.getSelectionStart();
  408. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "O" : "o");
  409. });
  410. binding.keyBoard.inputButtonP.setOnClickListener(v -> {
  411. if(!hasFocus){
  412. return;
  413. }
  414. int length = binding.mailNo.getText().length();
  415. if (length >= 16) {
  416. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  417. return;
  418. }
  419. int start = binding.mailNo.getSelectionStart();
  420. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "P" : "p");
  421. });
  422. binding.keyBoard.inputButtonA.setOnClickListener(v -> {
  423. if(!hasFocus){
  424. return;
  425. }
  426. int length = binding.mailNo.getText().length();
  427. if (length >= 16) {
  428. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  429. return;
  430. }
  431. int start = binding.mailNo.getSelectionStart();
  432. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "A" : "a");
  433. });
  434. binding.keyBoard.inputButtonS.setOnClickListener(v -> {
  435. if(!hasFocus){
  436. return;
  437. }
  438. int length = binding.mailNo.getText().length();
  439. if (length >= 16) {
  440. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  441. return;
  442. }
  443. int start = binding.mailNo.getSelectionStart();
  444. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "S" : "s");
  445. });
  446. binding.keyBoard.inputButtonD.setOnClickListener(v -> {
  447. if(!hasFocus){
  448. return;
  449. }
  450. int length = binding.mailNo.getText().length();
  451. if (length >= 16) {
  452. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  453. return;
  454. }
  455. int start = binding.mailNo.getSelectionStart();
  456. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "D" : "d");
  457. });
  458. binding.keyBoard.inputButtonF.setOnClickListener(v -> {
  459. if(!hasFocus){
  460. return;
  461. }
  462. int length = binding.mailNo.getText().length();
  463. if (length >= 16) {
  464. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  465. return;
  466. }
  467. int start = binding.mailNo.getSelectionStart();
  468. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "F" : "f");
  469. });
  470. binding.keyBoard.inputButtonG.setOnClickListener(v -> {
  471. if(!hasFocus){
  472. return;
  473. }
  474. int length = binding.mailNo.getText().length();
  475. if (length >= 16) {
  476. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  477. return;
  478. }
  479. int start = binding.mailNo.getSelectionStart();
  480. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "G" : "g");
  481. });
  482. binding.keyBoard.inputButtonH.setOnClickListener(v -> {
  483. if(!hasFocus){
  484. return;
  485. }
  486. int length = binding.mailNo.getText().length();
  487. if (length >= 16) {
  488. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  489. return;
  490. }
  491. int start = binding.mailNo.getSelectionStart();
  492. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "H" : "h");
  493. });
  494. binding.keyBoard.inputButtonJ.setOnClickListener(v -> {
  495. if(!hasFocus){
  496. return;
  497. }
  498. int length = binding.mailNo.getText().length();
  499. if (length >= 16) {
  500. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  501. return;
  502. }
  503. int start = binding.mailNo.getSelectionStart();
  504. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "J" : "j");
  505. });
  506. binding.keyBoard.inputButtonK.setOnClickListener(v -> {
  507. if(!hasFocus){
  508. return;
  509. }
  510. int length = binding.mailNo.getText().length();
  511. if (length >= 16) {
  512. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  513. return;
  514. }
  515. int start = binding.mailNo.getSelectionStart();
  516. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "K" : "k");
  517. });
  518. binding.keyBoard.inputButtonL.setOnClickListener(v -> {
  519. if(!hasFocus){
  520. return;
  521. }
  522. int length = binding.mailNo.getText().length();
  523. if (length >= 16) {
  524. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  525. return;
  526. }
  527. int start = binding.mailNo.getSelectionStart();
  528. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "L" : "l");
  529. });
  530. binding.keyBoard.inputButtonZ.setOnClickListener(v -> {
  531. if(!hasFocus){
  532. return;
  533. }
  534. int length = binding.mailNo.getText().length();
  535. if (length >= 16) {
  536. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  537. return;
  538. }
  539. int start = binding.mailNo.getSelectionStart();
  540. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "Z" : "z");
  541. });
  542. binding.keyBoard.inputButtonX.setOnClickListener(v -> {
  543. if(!hasFocus){
  544. return;
  545. }
  546. int length = binding.mailNo.getText().length();
  547. if (length >= 16) {
  548. ToastUtils.make(getContext(), "面单号最多不能超过16位!");
  549. return;
  550. }
  551. int start = binding.mailNo.getSelectionStart();
  552. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "X" : "x");
  553. });
  554. binding.keyBoard.inputButtonC.setOnClickListener(v -> {
  555. if(!hasFocus){
  556. return;
  557. }
  558. int length = binding.mailNo.getText().length();
  559. if (length >= 16) {
  560. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  561. return;
  562. }
  563. int start = binding.mailNo.getSelectionStart();
  564. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "C" : "c");
  565. });
  566. binding.keyBoard.inputButtonV.setOnClickListener(v -> {
  567. if(!hasFocus){
  568. return;
  569. }
  570. int length = binding.mailNo.getText().length();
  571. if (length >= 16) {
  572. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  573. return;
  574. }
  575. int start = binding.mailNo.getSelectionStart();
  576. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "V" : "v");
  577. });
  578. binding.keyBoard.inputButtonB.setOnClickListener(v -> {
  579. if(!hasFocus){
  580. return;
  581. }
  582. int length = binding.mailNo.getText().length();
  583. if (length >= 16) {
  584. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  585. return;
  586. }
  587. int start = binding.mailNo.getSelectionStart();
  588. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "B" : "b");
  589. });
  590. binding.keyBoard.inputButtonN.setOnClickListener(v -> {
  591. if(!hasFocus){
  592. return;
  593. }
  594. int length = binding.mailNo.getText().length();
  595. if (length >= 16) {
  596. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  597. return;
  598. }
  599. int start = binding.mailNo.getSelectionStart();
  600. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "N" : "n");
  601. });
  602. binding.keyBoard.inputButtonM.setOnClickListener(v -> {
  603. if(!hasFocus){
  604. return;
  605. }
  606. int length = binding.mailNo.getText().length();
  607. if (length >= 16) {
  608. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  609. return;
  610. }
  611. int start = binding.mailNo.getSelectionStart();
  612. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "M" : "m");
  613. });
  614. // 符号
  615. binding.keyBoard.symbolButton1.setOnClickListener(v -> {
  616. if(!hasFocus){
  617. return;
  618. }
  619. int length = binding.mailNo.getText().length();
  620. if (length >= 16) {
  621. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  622. return;
  623. }
  624. int start = binding.mailNo.getSelectionStart();
  625. binding.mailNo.getText().insert(start, "-");
  626. });
  627. binding.keyBoard.symbolButton2.setOnClickListener(v -> {
  628. if(!hasFocus){
  629. return;
  630. }
  631. int length = binding.mailNo.getText().length();
  632. if (length >= 16) {
  633. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  634. return;
  635. }
  636. int start = binding.mailNo.getSelectionStart();
  637. binding.mailNo.getText().insert(start, "/");
  638. });
  639. binding.keyBoard.symbolButton3.setOnClickListener(v -> {
  640. if(!hasFocus){
  641. return;
  642. }
  643. int length = binding.mailNo.getText().length();
  644. if (length >= 16) {
  645. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  646. return;
  647. }
  648. int start = binding.mailNo.getSelectionStart();
  649. binding.mailNo.getText().insert(start, ":");
  650. });
  651. binding.keyBoard.symbolButton4.setOnClickListener(v -> {
  652. if(!hasFocus){
  653. return;
  654. }
  655. int length = binding.mailNo.getText().length();
  656. if (length >= 16) {
  657. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  658. return;
  659. }
  660. int start = binding.mailNo.getSelectionStart();
  661. binding.mailNo.getText().insert(start, "+");
  662. });
  663. binding.keyBoard.symbolButton5.setOnClickListener(v -> {
  664. if(!hasFocus){
  665. return;
  666. }
  667. int length = binding.mailNo.getText().length();
  668. if (length >= 16) {
  669. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  670. return;
  671. }
  672. int start = binding.mailNo.getSelectionStart();
  673. binding.mailNo.getText().insert(start, "(");
  674. });
  675. binding.keyBoard.symbolButton6.setOnClickListener(v -> {
  676. if(!hasFocus){
  677. return;
  678. }
  679. int length = binding.mailNo.getText().length();
  680. if (length >= 16) {
  681. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  682. return;
  683. }
  684. int start = binding.mailNo.getSelectionStart();
  685. binding.mailNo.getText().insert(start, ")");
  686. });
  687. binding.keyBoard.symbolButton7.setOnClickListener(v -> {
  688. if(!hasFocus){
  689. return;
  690. }
  691. int length = binding.mailNo.getText().length();
  692. if (length >= 16) {
  693. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  694. return;
  695. }
  696. int start = binding.mailNo.getSelectionStart();
  697. binding.mailNo.getText().insert(start, "#");
  698. });
  699. binding.keyBoard.symbolButton8.setOnClickListener(v -> {
  700. if(!hasFocus){
  701. return;
  702. }
  703. int length = binding.mailNo.getText().length();
  704. if (length >= 16) {
  705. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  706. return;
  707. }
  708. int start = binding.mailNo.getSelectionStart();
  709. binding.mailNo.getText().insert(start, "@");
  710. });
  711. binding.keyBoard.symbolButton9.setOnClickListener(v -> {
  712. if(!hasFocus){
  713. return;
  714. }
  715. int length = binding.mailNo.getText().length();
  716. if (length >= 16) {
  717. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  718. return;
  719. }
  720. int start = binding.mailNo.getSelectionStart();
  721. binding.mailNo.getText().insert(start, ".");
  722. });
  723. binding.keyBoard.symbolButton10.setOnClickListener(v -> {
  724. if(!hasFocus){
  725. return;
  726. }
  727. int length = binding.mailNo.getText().length();
  728. if (length >= 16) {
  729. ToastUtils.make(getContext(), "?");
  730. return;
  731. }
  732. int start = binding.mailNo.getSelectionStart();
  733. binding.mailNo.getText().insert(start, "!");
  734. });
  735. // 大小写按键绑定 默认大写
  736. binding.keyBoard.inputButtonCaseSmall.setOnClickListener(v -> {
  737. if (caseSmallFlag.get()) {
  738. caseSmallFlag.set(false);
  739. } else {
  740. caseSmallFlag.set(true);
  741. }
  742. binding.keyBoard.inputButtonCaseSmall.setText(caseSmallFlag.get() ? "大写" : "小写");
  743. // 设置键盘字母大小写
  744. binding.keyBoard.inputButtonQ.setText(caseSmallFlag.get() ? "Q" : "q");
  745. binding.keyBoard.inputButtonW.setText(caseSmallFlag.get() ? "W" : "w");
  746. binding.keyBoard.inputButtonE.setText(caseSmallFlag.get() ? "E" : "e");
  747. binding.keyBoard.inputButtonR.setText(caseSmallFlag.get() ? "R" : "r");
  748. binding.keyBoard.inputButtonT.setText(caseSmallFlag.get() ? "T" : "t");
  749. binding.keyBoard.inputButtonY.setText(caseSmallFlag.get() ? "Y" : "y");
  750. binding.keyBoard.inputButtonU.setText(caseSmallFlag.get() ? "U" : "u");
  751. binding.keyBoard.inputButtonI.setText(caseSmallFlag.get() ? "I" : "i");
  752. binding.keyBoard.inputButtonO.setText(caseSmallFlag.get() ? "O" : "o");
  753. binding.keyBoard.inputButtonP.setText(caseSmallFlag.get() ? "P" : "p");
  754. binding.keyBoard.inputButtonA.setText(caseSmallFlag.get() ? "A" : "a");
  755. binding.keyBoard.inputButtonS.setText(caseSmallFlag.get() ? "S" : "s");
  756. binding.keyBoard.inputButtonD.setText(caseSmallFlag.get() ? "D" : "d");
  757. binding.keyBoard.inputButtonF.setText(caseSmallFlag.get() ? "F" : "f");
  758. binding.keyBoard.inputButtonG.setText(caseSmallFlag.get() ? "G" : "g");
  759. binding.keyBoard.inputButtonH.setText(caseSmallFlag.get() ? "H" : "h");
  760. binding.keyBoard.inputButtonJ.setText(caseSmallFlag.get() ? "J" : "j");
  761. binding.keyBoard.inputButtonK.setText(caseSmallFlag.get() ? "K" : "k");
  762. binding.keyBoard.inputButtonL.setText(caseSmallFlag.get() ? "L" : "l");
  763. binding.keyBoard.inputButtonZ.setText(caseSmallFlag.get() ? "Z" : "z");
  764. binding.keyBoard.inputButtonX.setText(caseSmallFlag.get() ? "X" : "x");
  765. binding.keyBoard.inputButtonC.setText(caseSmallFlag.get() ? "C" : "c");
  766. binding.keyBoard.inputButtonV.setText(caseSmallFlag.get() ? "V" : "v");
  767. binding.keyBoard.inputButtonB.setText(caseSmallFlag.get() ? "B" : "b");
  768. binding.keyBoard.inputButtonN.setText(caseSmallFlag.get() ? "N" : "n");
  769. binding.keyBoard.inputButtonM.setText(caseSmallFlag.get() ? "M" : "m");
  770. });
  771. binding.keyBoard.inputButtonCancel.setOnClickListener(v -> {
  772. Editable text = binding.mailNo.getText();
  773. int start = binding.mailNo.getSelectionStart();
  774. if (text.length() > 0) {
  775. if (start > 0) {
  776. text.delete(start - 1, start);
  777. }
  778. binding.mailNo.setText(text, TextView.BufferType.EDITABLE);
  779. binding.mailNo.setSelection(start - 1 < 0 ? text.length() : start - 1);
  780. }
  781. });
  782. // 长按删除
  783. binding.keyBoard.inputButtonCancel.setOnLongClickListener(v -> {
  784. binding.mailNo.getText().clear();
  785. return false;
  786. });
  787. });
  788. binding.returnBtn.setOnClickListener(view1 -> {
  789. if (null != timer) {
  790. timer.cancel();
  791. }
  792. NavUtils.navigate(this, R.id.action_collectMaterialsFragment_to_mainFragment);
  793. });
  794. // 默认选中运单号输入框
  795. binding.mailNo.requestFocus();
  796. }
  797. private void extracted(AtomicBoolean caseSmallFlag) {
  798. }
  799. public PreparedOrderResponseVo getData() {
  800. return data;
  801. }
  802. @Override
  803. public void onDestroy() {
  804. if (timer != null) {
  805. timer.cancel();
  806. timer = null;
  807. }
  808. super.onDestroy();
  809. binding = null;
  810. Log.i(TAG, TAG + "被销毁。。。");
  811. }
  812. }