1
0

CollectMaterialsFragment.java 39 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852
  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. expressSendOrderPickUpDto.setReopen("0");
  122. ICSPClient.takeParcelByExpressNo(LocalStorage.getInstance().getSession().getToken(), expressSendOrderPickUpDto, new Callback() {
  123. @Override
  124. public void onFailure(@NotNull Call call, @NotNull IOException e) {
  125. // TODO 取件接口请求失败逻辑处理
  126. ToastUtils.make(getContext(), "取件失败!网络异常!");
  127. Log.e(TAG, "onFailure: 取件请求失败!", e);
  128. LoggingUtils.sendErrorLog("业务异常: 取件请求失败! 网络异常! ", e);
  129. }
  130. @Override
  131. public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
  132. // TODO 返回锁板和锁id, 开柜门
  133. getActivity().runOnUiThread(() -> {
  134. String parseResponse = ICSPClient.isSuccessfulAndParseResponse(response);
  135. if (!StringUtils.isNullOrEmpty(parseResponse)) {
  136. try {
  137. ObjectMapper objectMapper = JacksonUtils.objectmapper;
  138. ResponseData<PreparedOrderResponseVo> responseData = null;
  139. try {
  140. responseData = objectMapper.readValue(parseResponse, new TypeReference<ResponseData<PreparedOrderResponseVo>>() {
  141. });
  142. ToastUtils.make(getContext(), responseData.getMsg());
  143. } catch (JsonProcessingException e) {
  144. Log.e(TAG, "onResponse: 解析取件开门响应信息失败! ", e);
  145. LoggingUtils.sendErrorLog("业务异常: 解析取件开门响应信息失败! ", e);
  146. } catch (RuntimeException e) {
  147. Log.e(TAG, "onResponse: 未知错误! ", e);
  148. ToastUtils.make(getContext(), "未知错误!");
  149. LoggingUtils.sendErrorLog("业务异常: 解析取件开门响应信息失败! 未知错误! ", e);
  150. }
  151. if (null != responseData && responseData.getCode().equals(ICSPConstant.OK)) {
  152. // 开门
  153. Log.i(TAG, "onResponse: 取件成功! ");
  154. ToastUtils.make(getContext(), "取件成功!");
  155. Bundle bundle = new Bundle();
  156. bundle.putString("mailNo", mailNo);
  157. bundle.putString("pickUp", responseData.getData().getPickUp());
  158. // 跳转到取件成功页面时传入一个参数 用于区分继续取件按钮跳转的页面 takeCodePage 取件码页面 courierPage 揽件页面
  159. bundle.putString("navigatePage", "courierPage");
  160. bundle.putString("takeCabinetNo", responseData.getData().getLockerName());
  161. ((MainActivity) getActivity()).getBundleMap().put("continueTake", bundle);
  162. if (null != timer) {
  163. timer.cancel();
  164. }
  165. NavUtils.navigate(CollectMaterialsFragment.this, R.id.action_collectMaterialsFragment_to_takeSuccessFragment);
  166. }
  167. } catch (RuntimeException e) {
  168. Log.e(TAG, "onResponse: 取件失败! ", e);
  169. ToastUtils.make(getContext(), "取件失败!");
  170. LoggingUtils.sendErrorLog("业务异常: 取件失败! ", e);
  171. }
  172. } else {
  173. ToastUtils.make(getContext(), "服务器异常! 请稍后重试!");
  174. }
  175. });
  176. }
  177. });
  178. }
  179. });
  180. }
  181. // 数字输入 5 手机号 4 面单号
  182. binding.mailNo.setOnFocusChangeListener((view1, hasFocus) -> {
  183. AtomicBoolean caseSmallFlag = new AtomicBoolean(true);
  184. if(!hasFocus){
  185. return;
  186. }
  187. binding.keyBoard.inputButton0.setOnClickListener(v -> {
  188. if(!hasFocus){
  189. return;
  190. }
  191. int length = binding.mailNo.getText().length();
  192. if (length >= 16) {
  193. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  194. return;
  195. }
  196. int start = binding.mailNo.getSelectionStart();
  197. binding.mailNo.getText().insert(start, "0");
  198. });
  199. binding.keyBoard.inputButton1.setOnClickListener(v -> {
  200. if(!hasFocus){
  201. return;
  202. }
  203. int length = binding.mailNo.getText().length();
  204. if (length >= 16) {
  205. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  206. return;
  207. }
  208. int start = binding.mailNo.getSelectionStart();
  209. binding.mailNo.getText().insert(start, "1");
  210. });
  211. binding.keyBoard.inputButton2.setOnClickListener(v -> {
  212. if(!hasFocus){
  213. return;
  214. }
  215. int length = binding.mailNo.getText().length();
  216. if (length >= 16) {
  217. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  218. return;
  219. }
  220. int start = binding.mailNo.getSelectionStart();
  221. binding.mailNo.getText().insert(start, "2");
  222. });
  223. binding.keyBoard.inputButton3.setOnClickListener(v -> {
  224. if(!hasFocus){
  225. return;
  226. }
  227. int length = binding.mailNo.getText().length();
  228. if (length >= 16) {
  229. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  230. return;
  231. }
  232. int start = binding.mailNo.getSelectionStart();
  233. binding.mailNo.getText().insert(start, "3");
  234. });
  235. binding.keyBoard.inputButton4.setOnClickListener(v -> {
  236. if(!hasFocus){
  237. return;
  238. }
  239. int length = binding.mailNo.getText().length();
  240. if (length >= 16) {
  241. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  242. return;
  243. }
  244. int start = binding.mailNo.getSelectionStart();
  245. binding.mailNo.getText().insert(start, "4");
  246. });
  247. binding.keyBoard.inputButton5.setOnClickListener(v -> {
  248. if(!hasFocus){
  249. return;
  250. }
  251. int length = binding.mailNo.getText().length();
  252. if (length >= 16) {
  253. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  254. return;
  255. }
  256. int start = binding.mailNo.getSelectionStart();
  257. binding.mailNo.getText().insert(start, "5");
  258. });
  259. binding.keyBoard.inputButton6.setOnClickListener(v -> {
  260. if(!hasFocus){
  261. return;
  262. }
  263. int length = binding.mailNo.getText().length();
  264. if (length >= 16) {
  265. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  266. return;
  267. }
  268. int start = binding.mailNo.getSelectionStart();
  269. binding.mailNo.getText().insert(start, "6");
  270. });
  271. binding.keyBoard.inputButton7.setOnClickListener(v -> {
  272. if(!hasFocus){
  273. return;
  274. }
  275. int length = binding.mailNo.getText().length();
  276. if (length >= 16) {
  277. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  278. return;
  279. }
  280. int start = binding.mailNo.getSelectionStart();
  281. binding.mailNo.getText().insert(start, "7");
  282. });
  283. binding.keyBoard.inputButton8.setOnClickListener(v -> {
  284. if(!hasFocus){
  285. return;
  286. }
  287. int length = binding.mailNo.getText().length();
  288. if (length >= 16) {
  289. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  290. return;
  291. }
  292. int start = binding.mailNo.getSelectionStart();
  293. binding.mailNo.getText().insert(start, "8");
  294. });
  295. binding.keyBoard.inputButton9.setOnClickListener(v -> {
  296. if(!hasFocus){
  297. return;
  298. }
  299. int length = binding.mailNo.getText().length();
  300. if (length >= 16) {
  301. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  302. return;
  303. }
  304. int start = binding.mailNo.getSelectionStart();
  305. binding.mailNo.getText().insert(start, "9");
  306. });
  307. // todo:绑定字母按键
  308. binding.keyBoard.inputButtonQ.setOnClickListener(v -> {
  309. if(!hasFocus){
  310. return;
  311. }
  312. int length = binding.mailNo.getText().length();
  313. if (length >= 16) {
  314. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  315. return;
  316. }
  317. int start = binding.mailNo.getSelectionStart();
  318. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "Q" : "q");
  319. });
  320. binding.keyBoard.inputButtonW.setOnClickListener(v -> {
  321. if(!hasFocus){
  322. return;
  323. }
  324. int length = binding.mailNo.getText().length();
  325. if (length >= 16) {
  326. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  327. return;
  328. }
  329. int start = binding.mailNo.getSelectionStart();
  330. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "W" : "w");
  331. });
  332. binding.keyBoard.inputButtonE.setOnClickListener(v -> {
  333. if(!hasFocus){
  334. return;
  335. }
  336. int length = binding.mailNo.getText().length();
  337. if (length >= 16) {
  338. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  339. return;
  340. }
  341. int start = binding.mailNo.getSelectionStart();
  342. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "E" : "e");
  343. });
  344. binding.keyBoard.inputButtonR.setOnClickListener(v -> {
  345. if(!hasFocus){
  346. return;
  347. }
  348. int length = binding.mailNo.getText().length();
  349. if (length >= 16) {
  350. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  351. return;
  352. }
  353. int start = binding.mailNo.getSelectionStart();
  354. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "R" : "r");
  355. });
  356. binding.keyBoard.inputButtonT.setOnClickListener(v -> {
  357. if(!hasFocus){
  358. return;
  359. }
  360. int length = binding.mailNo.getText().length();
  361. if (length >= 16) {
  362. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  363. return;
  364. }
  365. int start = binding.mailNo.getSelectionStart();
  366. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "T" : "t");
  367. });
  368. binding.keyBoard.inputButtonY.setOnClickListener(v -> {
  369. if(!hasFocus){
  370. return;
  371. }
  372. int length = binding.mailNo.getText().length();
  373. if (length >= 16) {
  374. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  375. return;
  376. }
  377. int start = binding.mailNo.getSelectionStart();
  378. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "Y" : "y");
  379. });
  380. binding.keyBoard.inputButtonU.setOnClickListener(v -> {
  381. if(!hasFocus){
  382. return;
  383. }
  384. int length = binding.mailNo.getText().length();
  385. if (length >= 16) {
  386. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  387. return;
  388. }
  389. int start = binding.mailNo.getSelectionStart();
  390. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "U" : "u");
  391. });
  392. binding.keyBoard.inputButtonI.setOnClickListener(v -> {
  393. if(!hasFocus){
  394. return;
  395. }
  396. int length = binding.mailNo.getText().length();
  397. if (length >= 16) {
  398. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  399. return;
  400. }
  401. int start = binding.mailNo.getSelectionStart();
  402. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "I" : "i");
  403. });
  404. binding.keyBoard.inputButtonO.setOnClickListener(v -> {
  405. if(!hasFocus){
  406. return;
  407. }
  408. int length = binding.mailNo.getText().length();
  409. if (length >= 16) {
  410. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  411. return;
  412. }
  413. int start = binding.mailNo.getSelectionStart();
  414. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "O" : "o");
  415. });
  416. binding.keyBoard.inputButtonP.setOnClickListener(v -> {
  417. if(!hasFocus){
  418. return;
  419. }
  420. int length = binding.mailNo.getText().length();
  421. if (length >= 16) {
  422. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  423. return;
  424. }
  425. int start = binding.mailNo.getSelectionStart();
  426. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "P" : "p");
  427. });
  428. binding.keyBoard.inputButtonA.setOnClickListener(v -> {
  429. if(!hasFocus){
  430. return;
  431. }
  432. int length = binding.mailNo.getText().length();
  433. if (length >= 16) {
  434. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  435. return;
  436. }
  437. int start = binding.mailNo.getSelectionStart();
  438. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "A" : "a");
  439. });
  440. binding.keyBoard.inputButtonS.setOnClickListener(v -> {
  441. if(!hasFocus){
  442. return;
  443. }
  444. int length = binding.mailNo.getText().length();
  445. if (length >= 16) {
  446. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  447. return;
  448. }
  449. int start = binding.mailNo.getSelectionStart();
  450. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "S" : "s");
  451. });
  452. binding.keyBoard.inputButtonD.setOnClickListener(v -> {
  453. if(!hasFocus){
  454. return;
  455. }
  456. int length = binding.mailNo.getText().length();
  457. if (length >= 16) {
  458. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  459. return;
  460. }
  461. int start = binding.mailNo.getSelectionStart();
  462. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "D" : "d");
  463. });
  464. binding.keyBoard.inputButtonF.setOnClickListener(v -> {
  465. if(!hasFocus){
  466. return;
  467. }
  468. int length = binding.mailNo.getText().length();
  469. if (length >= 16) {
  470. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  471. return;
  472. }
  473. int start = binding.mailNo.getSelectionStart();
  474. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "F" : "f");
  475. });
  476. binding.keyBoard.inputButtonG.setOnClickListener(v -> {
  477. if(!hasFocus){
  478. return;
  479. }
  480. int length = binding.mailNo.getText().length();
  481. if (length >= 16) {
  482. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  483. return;
  484. }
  485. int start = binding.mailNo.getSelectionStart();
  486. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "G" : "g");
  487. });
  488. binding.keyBoard.inputButtonH.setOnClickListener(v -> {
  489. if(!hasFocus){
  490. return;
  491. }
  492. int length = binding.mailNo.getText().length();
  493. if (length >= 16) {
  494. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  495. return;
  496. }
  497. int start = binding.mailNo.getSelectionStart();
  498. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "H" : "h");
  499. });
  500. binding.keyBoard.inputButtonJ.setOnClickListener(v -> {
  501. if(!hasFocus){
  502. return;
  503. }
  504. int length = binding.mailNo.getText().length();
  505. if (length >= 16) {
  506. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  507. return;
  508. }
  509. int start = binding.mailNo.getSelectionStart();
  510. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "J" : "j");
  511. });
  512. binding.keyBoard.inputButtonK.setOnClickListener(v -> {
  513. if(!hasFocus){
  514. return;
  515. }
  516. int length = binding.mailNo.getText().length();
  517. if (length >= 16) {
  518. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  519. return;
  520. }
  521. int start = binding.mailNo.getSelectionStart();
  522. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "K" : "k");
  523. });
  524. binding.keyBoard.inputButtonL.setOnClickListener(v -> {
  525. if(!hasFocus){
  526. return;
  527. }
  528. int length = binding.mailNo.getText().length();
  529. if (length >= 16) {
  530. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  531. return;
  532. }
  533. int start = binding.mailNo.getSelectionStart();
  534. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "L" : "l");
  535. });
  536. binding.keyBoard.inputButtonZ.setOnClickListener(v -> {
  537. if(!hasFocus){
  538. return;
  539. }
  540. int length = binding.mailNo.getText().length();
  541. if (length >= 16) {
  542. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  543. return;
  544. }
  545. int start = binding.mailNo.getSelectionStart();
  546. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "Z" : "z");
  547. });
  548. binding.keyBoard.inputButtonX.setOnClickListener(v -> {
  549. if(!hasFocus){
  550. return;
  551. }
  552. int length = binding.mailNo.getText().length();
  553. if (length >= 16) {
  554. ToastUtils.make(getContext(), "面单号最多不能超过16位!");
  555. return;
  556. }
  557. int start = binding.mailNo.getSelectionStart();
  558. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "X" : "x");
  559. });
  560. binding.keyBoard.inputButtonC.setOnClickListener(v -> {
  561. if(!hasFocus){
  562. return;
  563. }
  564. int length = binding.mailNo.getText().length();
  565. if (length >= 16) {
  566. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  567. return;
  568. }
  569. int start = binding.mailNo.getSelectionStart();
  570. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "C" : "c");
  571. });
  572. binding.keyBoard.inputButtonV.setOnClickListener(v -> {
  573. if(!hasFocus){
  574. return;
  575. }
  576. int length = binding.mailNo.getText().length();
  577. if (length >= 16) {
  578. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  579. return;
  580. }
  581. int start = binding.mailNo.getSelectionStart();
  582. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "V" : "v");
  583. });
  584. binding.keyBoard.inputButtonB.setOnClickListener(v -> {
  585. if(!hasFocus){
  586. return;
  587. }
  588. int length = binding.mailNo.getText().length();
  589. if (length >= 16) {
  590. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  591. return;
  592. }
  593. int start = binding.mailNo.getSelectionStart();
  594. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "B" : "b");
  595. });
  596. binding.keyBoard.inputButtonN.setOnClickListener(v -> {
  597. if(!hasFocus){
  598. return;
  599. }
  600. int length = binding.mailNo.getText().length();
  601. if (length >= 16) {
  602. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  603. return;
  604. }
  605. int start = binding.mailNo.getSelectionStart();
  606. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "N" : "n");
  607. });
  608. binding.keyBoard.inputButtonM.setOnClickListener(v -> {
  609. if(!hasFocus){
  610. return;
  611. }
  612. int length = binding.mailNo.getText().length();
  613. if (length >= 16) {
  614. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  615. return;
  616. }
  617. int start = binding.mailNo.getSelectionStart();
  618. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "M" : "m");
  619. });
  620. // 符号
  621. binding.keyBoard.symbolButton1.setOnClickListener(v -> {
  622. if(!hasFocus){
  623. return;
  624. }
  625. int length = binding.mailNo.getText().length();
  626. if (length >= 16) {
  627. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  628. return;
  629. }
  630. int start = binding.mailNo.getSelectionStart();
  631. binding.mailNo.getText().insert(start, "-");
  632. });
  633. binding.keyBoard.symbolButton2.setOnClickListener(v -> {
  634. if(!hasFocus){
  635. return;
  636. }
  637. int length = binding.mailNo.getText().length();
  638. if (length >= 16) {
  639. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  640. return;
  641. }
  642. int start = binding.mailNo.getSelectionStart();
  643. binding.mailNo.getText().insert(start, "/");
  644. });
  645. binding.keyBoard.symbolButton3.setOnClickListener(v -> {
  646. if(!hasFocus){
  647. return;
  648. }
  649. int length = binding.mailNo.getText().length();
  650. if (length >= 16) {
  651. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  652. return;
  653. }
  654. int start = binding.mailNo.getSelectionStart();
  655. binding.mailNo.getText().insert(start, ":");
  656. });
  657. binding.keyBoard.symbolButton4.setOnClickListener(v -> {
  658. if(!hasFocus){
  659. return;
  660. }
  661. int length = binding.mailNo.getText().length();
  662. if (length >= 16) {
  663. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  664. return;
  665. }
  666. int start = binding.mailNo.getSelectionStart();
  667. binding.mailNo.getText().insert(start, "+");
  668. });
  669. binding.keyBoard.symbolButton5.setOnClickListener(v -> {
  670. if(!hasFocus){
  671. return;
  672. }
  673. int length = binding.mailNo.getText().length();
  674. if (length >= 16) {
  675. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  676. return;
  677. }
  678. int start = binding.mailNo.getSelectionStart();
  679. binding.mailNo.getText().insert(start, "(");
  680. });
  681. binding.keyBoard.symbolButton6.setOnClickListener(v -> {
  682. if(!hasFocus){
  683. return;
  684. }
  685. int length = binding.mailNo.getText().length();
  686. if (length >= 16) {
  687. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  688. return;
  689. }
  690. int start = binding.mailNo.getSelectionStart();
  691. binding.mailNo.getText().insert(start, ")");
  692. });
  693. binding.keyBoard.symbolButton7.setOnClickListener(v -> {
  694. if(!hasFocus){
  695. return;
  696. }
  697. int length = binding.mailNo.getText().length();
  698. if (length >= 16) {
  699. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  700. return;
  701. }
  702. int start = binding.mailNo.getSelectionStart();
  703. binding.mailNo.getText().insert(start, "#");
  704. });
  705. binding.keyBoard.symbolButton8.setOnClickListener(v -> {
  706. if(!hasFocus){
  707. return;
  708. }
  709. int length = binding.mailNo.getText().length();
  710. if (length >= 16) {
  711. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  712. return;
  713. }
  714. int start = binding.mailNo.getSelectionStart();
  715. binding.mailNo.getText().insert(start, "@");
  716. });
  717. binding.keyBoard.symbolButton9.setOnClickListener(v -> {
  718. if(!hasFocus){
  719. return;
  720. }
  721. int length = binding.mailNo.getText().length();
  722. if (length >= 16) {
  723. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  724. return;
  725. }
  726. int start = binding.mailNo.getSelectionStart();
  727. binding.mailNo.getText().insert(start, ".");
  728. });
  729. binding.keyBoard.symbolButton10.setOnClickListener(v -> {
  730. if(!hasFocus){
  731. return;
  732. }
  733. int length = binding.mailNo.getText().length();
  734. if (length >= 16) {
  735. ToastUtils.make(getContext(), "?");
  736. return;
  737. }
  738. int start = binding.mailNo.getSelectionStart();
  739. binding.mailNo.getText().insert(start, "!");
  740. });
  741. // 大小写按键绑定 默认大写
  742. binding.keyBoard.inputButtonCaseSmall.setOnClickListener(v -> {
  743. if (caseSmallFlag.get()) {
  744. caseSmallFlag.set(false);
  745. } else {
  746. caseSmallFlag.set(true);
  747. }
  748. binding.keyBoard.inputButtonCaseSmall.setText(caseSmallFlag.get() ? "大写" : "小写");
  749. // 设置键盘字母大小写
  750. binding.keyBoard.inputButtonQ.setText(caseSmallFlag.get() ? "Q" : "q");
  751. binding.keyBoard.inputButtonW.setText(caseSmallFlag.get() ? "W" : "w");
  752. binding.keyBoard.inputButtonE.setText(caseSmallFlag.get() ? "E" : "e");
  753. binding.keyBoard.inputButtonR.setText(caseSmallFlag.get() ? "R" : "r");
  754. binding.keyBoard.inputButtonT.setText(caseSmallFlag.get() ? "T" : "t");
  755. binding.keyBoard.inputButtonY.setText(caseSmallFlag.get() ? "Y" : "y");
  756. binding.keyBoard.inputButtonU.setText(caseSmallFlag.get() ? "U" : "u");
  757. binding.keyBoard.inputButtonI.setText(caseSmallFlag.get() ? "I" : "i");
  758. binding.keyBoard.inputButtonO.setText(caseSmallFlag.get() ? "O" : "o");
  759. binding.keyBoard.inputButtonP.setText(caseSmallFlag.get() ? "P" : "p");
  760. binding.keyBoard.inputButtonA.setText(caseSmallFlag.get() ? "A" : "a");
  761. binding.keyBoard.inputButtonS.setText(caseSmallFlag.get() ? "S" : "s");
  762. binding.keyBoard.inputButtonD.setText(caseSmallFlag.get() ? "D" : "d");
  763. binding.keyBoard.inputButtonF.setText(caseSmallFlag.get() ? "F" : "f");
  764. binding.keyBoard.inputButtonG.setText(caseSmallFlag.get() ? "G" : "g");
  765. binding.keyBoard.inputButtonH.setText(caseSmallFlag.get() ? "H" : "h");
  766. binding.keyBoard.inputButtonJ.setText(caseSmallFlag.get() ? "J" : "j");
  767. binding.keyBoard.inputButtonK.setText(caseSmallFlag.get() ? "K" : "k");
  768. binding.keyBoard.inputButtonL.setText(caseSmallFlag.get() ? "L" : "l");
  769. binding.keyBoard.inputButtonZ.setText(caseSmallFlag.get() ? "Z" : "z");
  770. binding.keyBoard.inputButtonX.setText(caseSmallFlag.get() ? "X" : "x");
  771. binding.keyBoard.inputButtonC.setText(caseSmallFlag.get() ? "C" : "c");
  772. binding.keyBoard.inputButtonV.setText(caseSmallFlag.get() ? "V" : "v");
  773. binding.keyBoard.inputButtonB.setText(caseSmallFlag.get() ? "B" : "b");
  774. binding.keyBoard.inputButtonN.setText(caseSmallFlag.get() ? "N" : "n");
  775. binding.keyBoard.inputButtonM.setText(caseSmallFlag.get() ? "M" : "m");
  776. });
  777. binding.keyBoard.inputButtonCancel.setOnClickListener(v -> {
  778. Editable text = binding.mailNo.getText();
  779. int start = binding.mailNo.getSelectionStart();
  780. if (text.length() > 0) {
  781. if (start > 0) {
  782. text.delete(start - 1, start);
  783. }
  784. binding.mailNo.setText(text, TextView.BufferType.EDITABLE);
  785. binding.mailNo.setSelection(start - 1 < 0 ? text.length() : start - 1);
  786. }
  787. });
  788. // 长按删除
  789. binding.keyBoard.inputButtonCancel.setOnLongClickListener(v -> {
  790. binding.mailNo.getText().clear();
  791. return false;
  792. });
  793. });
  794. binding.returnBtn.setOnClickListener(view1 -> {
  795. if (null != timer) {
  796. timer.cancel();
  797. }
  798. NavUtils.navigate(this, R.id.action_collectMaterialsFragment_to_SendKeyBoardFragment);
  799. });
  800. // 默认选中运单号输入框
  801. binding.mailNo.requestFocus();
  802. }
  803. private void extracted(AtomicBoolean caseSmallFlag) {
  804. }
  805. public PreparedOrderResponseVo getData() {
  806. return data;
  807. }
  808. @Override
  809. public void onDestroy() {
  810. if (timer != null) {
  811. timer.cancel();
  812. timer = null;
  813. }
  814. super.onDestroy();
  815. binding = null;
  816. Log.i(TAG, TAG + "被销毁。。。");
  817. }
  818. }