1
0

InputInfoKeyBoardFragment.java 55 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119
  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.FragmentInputKeyBoardBinding;
  20. import com.emato.ich.databinding.FragmentMyKeyBoardBinding;
  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.local.LocalStorage;
  25. import com.emato.ich.utils.BaseUtils;
  26. import com.emato.ich.utils.JacksonUtils;
  27. import com.emato.ich.utils.Log;
  28. import com.emato.ich.utils.LoggingUtils;
  29. import com.emato.ich.utils.NavUtils;
  30. import com.emato.ich.utils.StringUtils;
  31. import com.emato.ich.utils.TimeOutUtils;
  32. import com.emato.ich.utils.ToastUtils;
  33. import com.fasterxml.jackson.core.JsonProcessingException;
  34. import com.fasterxml.jackson.core.type.TypeReference;
  35. import com.fasterxml.jackson.databind.ObjectMapper;
  36. import org.jetbrains.annotations.NotNull;
  37. import java.io.IOException;
  38. import java.util.concurrent.atomic.AtomicBoolean;
  39. import java.util.concurrent.atomic.AtomicInteger;
  40. import java.util.regex.Matcher;
  41. import java.util.regex.Pattern;
  42. import okhttp3.Call;
  43. import okhttp3.Callback;
  44. import okhttp3.Response;
  45. /**
  46. * 输入投递信息
  47. */
  48. public class InputInfoKeyBoardFragment extends Fragment {
  49. private static final String TAG = "InputInfoFragment";
  50. private FragmentInputKeyBoardBinding binding;
  51. private PreparedOrderResponseVo data;
  52. private final AtomicInteger mailNoLock = new AtomicInteger(1);
  53. private final AtomicInteger submitLock = new AtomicInteger(1);
  54. private CountDownTimer timer;
  55. private long start;
  56. @Nullable
  57. @org.jetbrains.annotations.Nullable
  58. @Override
  59. public View onCreateView(@NonNull @NotNull LayoutInflater inflater, @Nullable @org.jetbrains.annotations.Nullable ViewGroup container, @Nullable @org.jetbrains.annotations.Nullable Bundle savedInstanceState) {
  60. start = System.currentTimeMillis();
  61. binding = FragmentInputKeyBoardBinding.inflate(inflater, container, false);
  62. return binding.getRoot();
  63. }
  64. public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
  65. long end = System.currentTimeMillis();
  66. Log.i(TAG, TAG + "页面渲染速度为" + (end - start) + "ms。");
  67. // BaseUtils.disableEditText(binding.delivererPhone);
  68. BaseUtils.disableEditText(binding.delivererPhoneConfirm);
  69. BaseUtils.disableEditText(binding.mailNo);
  70. try {
  71. MainActivity activity = (MainActivity) getActivity();
  72. timer = TimeOutUtils.timeout(activity, InputInfoKeyBoardFragment.this, binding.timeout, 90);
  73. timer.start();
  74. } catch (Exception e) {
  75. Log.e(TAG, "onViewCreated: 倒计时出现异常! ", e);
  76. LoggingUtils.sendErrorLog("业务异常: 输入投递信息页面倒计时出现异常! ", e);
  77. }
  78. Bundle arguments = null;
  79. String sectionType = null;
  80. MainActivity activity = (MainActivity) getActivity();
  81. String loginType = activity.getBundleMap().get(CourierFragment.class.getName()).getString("loginType");
  82. try {
  83. arguments = activity.getBundleMap().get(ChooseCabinetFragment.class.getName());
  84. sectionType = arguments.getString("section_type");
  85. binding.mailNo.setInputType(InputType.TYPE_NULL);
  86. // 扫描枪监听 扫描运单号
  87. activity.scanGunKeyEventHelper = new ScanGunKeyEventHelper(s -> {
  88. // 扫码成功回调
  89. Log.d(TAG, "onScanSuccess: " + s);
  90. Log.d(TAG, "onScanSuccess: " + loginType);
  91. if (!StringUtils.isNullOrEmpty(s)) {
  92. for (String pattern : ScanGunConstant.getPatterns()) {
  93. Matcher matcher = Pattern.compile(pattern).matcher(s);
  94. if (!matcher.matches()) {
  95. ToastUtils.make(getContext(), "请将条形码置于扫码枪前! ");
  96. return;
  97. }
  98. }
  99. }
  100. if (mailNoLock.get() == 1) {
  101. // 禁用软件盘
  102. Editable text = binding.mailNo.getText();
  103. text.clear();
  104. binding.mailNo.setText(s);
  105. mailNoLock.incrementAndGet();
  106. if("store".equals(loginType)){
  107. // TODO 预定义,实际参数可能不一致 oms获取用户手机号 自动填充
  108. ICSPClient.getUserPhoneNumber(LocalStorage.getInstance().getSession().getToken(), BaseUtils.getClientId(), s, new Callback() {
  109. @Override
  110. public void onFailure(@NotNull Call call, @NotNull IOException e) {
  111. // 请求失败
  112. Log.e(TAG, "onFailure: 请求oms获取手机号失败! 网络异常! ", e);
  113. LoggingUtils.sendErrorLog("业务异常: 请求oms获取手机号失败! 网络异常! ", e);
  114. ToastUtils.make(getContext(), "服务器异常! 请手动输入!");
  115. mailNoLock.set(1);
  116. }
  117. @Override
  118. public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
  119. getActivity().runOnUiThread(() -> {
  120. String parseResponse = ICSPClient.isSuccessfulAndParseResponse(response);
  121. if (!StringUtils.isNullOrEmpty(parseResponse)) {
  122. try {
  123. ResponseData<PreparedOrderResponseVo> responseData = new ObjectMapper().readValue(parseResponse, new TypeReference<ResponseData<PreparedOrderResponseVo>>() {
  124. });
  125. PreparedOrderResponseVo data = responseData.getData();
  126. if (null != responseData && ICSPConstant.OK.equals(responseData.getCode())) {
  127. String collectorPhone = data.getCollectorPhone();
  128. if(StringUtils.isNullOrEmpty(collectorPhone)){
  129. ToastUtils.make(getContext(), "未查询到手机号信息,请确认运单号是否正确!");
  130. }
  131. binding.delivererPhoneConfirm.setText(collectorPhone);
  132. } else {
  133. ToastUtils.make(getContext(), "查询手机号失败,返回信息:" + responseData.getMsg());
  134. }
  135. } catch (JsonProcessingException e) {
  136. Log.e(TAG, "onResponse: 服务器响应错误! 自动获取用户手机号失败! ", e);
  137. ToastUtils.make(getContext(), "网络异常! 请手动输入手机号! ");
  138. LoggingUtils.sendErrorLog("业务异常: 服务器响应错误! 自动获取用户手机号失败! ", e);
  139. } catch (RuntimeException e) {
  140. Log.e(TAG, "onResponse: 获取用户手机号未知错误! ", e);
  141. ToastUtils.make(getContext(), "未查询到手机号! 请手动输入! ");
  142. LoggingUtils.sendErrorLog("业务异常: 获取用户手机号未知错误! ", e);
  143. }
  144. } else {
  145. ToastUtils.make(getContext(), "服务器异常!请稍后重试!");
  146. }
  147. mailNoLock.set(1);
  148. });
  149. }
  150. });
  151. }
  152. }
  153. });
  154. } catch (RuntimeException e) {
  155. Log.e(TAG, "onViewCreated: InputInfoFragment页面获取ChooseCabinetFragment传值错误! ", e);
  156. LoggingUtils.sendErrorLog("业务异常: InputInfoFragment页面获取ChooseCabinetFragment传值错误! ", e);
  157. }
  158. // TODO 离线逻辑, 暂时不做
  159. 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}$");
  160. // 下单逻辑
  161. String finalSectionType = sectionType;
  162. if (submitLock.get() == 1) {
  163. submitLock.incrementAndGet();
  164. binding.keyBoard.inputButtonConfirm.setOnClickListener(view1 -> {
  165. Bundle bundle = new Bundle();
  166. String mailNo = binding.mailNo.getText().toString();
  167. // String phone = binding.delivererPhone.getText().toString();
  168. String phoneConfirm = binding.delivererPhoneConfirm.getText().toString();
  169. if (!phonePattern.matcher(phoneConfirm).matches()) {
  170. ToastUtils.make(getContext(), "请输入正确的手机号!");
  171. } else if (StringUtils.isNullOrEmpty(mailNo)) {
  172. ToastUtils.make(getContext(), "运单号不能为空!请扫描运单号!");
  173. } else {
  174. // 验证完 预下单
  175. PreparedOrderVo preparedOrderVo = new PreparedOrderVo();
  176. preparedOrderVo.setClientId(BaseUtils.getClientId());
  177. preparedOrderVo.setMailNo(mailNo);
  178. preparedOrderVo.setCollectorPhone(phoneConfirm);
  179. preparedOrderVo.setLockerType(finalSectionType);
  180. preparedOrderVo.setDelivererPhone(LocalStorage.getInstance().getSession().getPhone());
  181. if("courier".equals(loginType)){
  182. preparedOrderVo.setOrderType("1");
  183. }else if("collect".equals(loginType)){
  184. preparedOrderVo.setOrderType("2");
  185. }else{
  186. preparedOrderVo.setOrderType("0");
  187. }
  188. // 预下单
  189. ICSPClient.preparedOrder(LocalStorage.getInstance().getSession().getToken(), preparedOrderVo, new Callback() {
  190. @Override
  191. public void onFailure(@NotNull Call call, @NotNull IOException e) {
  192. // TODO 预下单调用失败
  193. ToastUtils.make(getContext(), "请求服务器失败!网络异常!");
  194. Log.e(TAG, "onFailure: 预下单失败! call: " + call.timeout().toString(), e);
  195. LoggingUtils.sendErrorLog("业务异常: 预下单失败! call: " + call.timeout().toString(), e);
  196. }
  197. @Override
  198. public void onResponse(@NotNull Call call, @NotNull Response response) {
  199. ((MainActivity) getActivity()).runOnUiThread(() -> {
  200. try {
  201. String responseStr = ICSPClient.isSuccessfulAndParseResponse(response);
  202. if (!StringUtils.isNullOrEmpty(responseStr)) {
  203. ObjectMapper objectMapper = JacksonUtils.objectmapper;
  204. ResponseData<PreparedOrderResponseVo> responseData = objectMapper.readValue(responseStr, new TypeReference<ResponseData<PreparedOrderResponseVo>>() {
  205. });
  206. data = responseData.getData();
  207. // 响应信息
  208. if (responseData.getCode().equals(ICSPConstant.OK)) {
  209. bundle.putString("preparedOrderResponse", objectMapper.writeValueAsString(data));
  210. bundle.putString("takeNo", mailNo);
  211. bundle.putString("sectionType", finalSectionType);
  212. // 跳转到确认投递
  213. try {
  214. MainActivity activity = (MainActivity) getActivity();
  215. activity.getBundleMap().put(InputInfoKeyBoardFragment.class.getName(), bundle);
  216. } catch (RuntimeException e) {
  217. Log.e(TAG, "onResponse: InputInfoFragment页面获取SendInfoConfirmFragment传值错误! ", e);
  218. LoggingUtils.sendErrorLog("业务异常: InputInfoFragment页面获取SendInfoConfirmFragment传值错误! ", e);
  219. }
  220. if (null != timer) {
  221. timer.cancel();
  222. }
  223. NavUtils.navigate(InputInfoKeyBoardFragment.this, R.id.action_InputInfoKeyBoardFragment_to_sendInfoConfirmFragment);
  224. }
  225. Log.i(TAG, "onResponse: ICSP返回码: " + responseData.getCode() + ", 返回信息: " + responseData.getMsg());
  226. ToastUtils.make(getContext(), responseData.getMsg());
  227. } else {
  228. ToastUtils.make(getContext(), "服务器异常!请稍后重试!");
  229. }
  230. } catch (JsonProcessingException e) {
  231. Log.e(TAG, "onResponse: 预下单转换成JSON出错! ", e);
  232. LoggingUtils.sendErrorLog("业务异常: 预下单转换成JSON出错! ", e);
  233. } catch (RuntimeException e) {
  234. Log.e(TAG, "onResponse: 预下单失败! ", e);
  235. LoggingUtils.sendErrorLog("业务异常: 预下单失败! ", e);
  236. }
  237. });
  238. }
  239. });
  240. }
  241. });
  242. binding.confirm.setOnClickListener(view1 -> {
  243. Bundle bundle = new Bundle();
  244. String mailNo = binding.mailNo.getText().toString();
  245. // String phone = binding.delivererPhone.getText().toString();
  246. String phoneConfirm = binding.delivererPhoneConfirm.getText().toString();
  247. if (!phonePattern.matcher(phoneConfirm).matches()) {
  248. ToastUtils.make(getContext(), "请输入正确的手机号!");
  249. } else if (StringUtils.isNullOrEmpty(mailNo)) {
  250. ToastUtils.make(getContext(), "运单号不能为空!请扫描运单号!");
  251. } else {
  252. // 验证完 预下单
  253. PreparedOrderVo preparedOrderVo = new PreparedOrderVo();
  254. preparedOrderVo.setClientId(BaseUtils.getClientId());
  255. preparedOrderVo.setMailNo(mailNo);
  256. preparedOrderVo.setCollectorPhone(phoneConfirm);
  257. preparedOrderVo.setLockerType(finalSectionType);
  258. preparedOrderVo.setDelivererPhone(LocalStorage.getInstance().getSession().getPhone());
  259. if("courier".equals(loginType)){
  260. preparedOrderVo.setOrderType("1");
  261. }else if("collect".equals(loginType)){
  262. preparedOrderVo.setOrderType("2");
  263. }else{
  264. preparedOrderVo.setOrderType("0");
  265. }
  266. // 预下单
  267. ICSPClient.preparedOrder(LocalStorage.getInstance().getSession().getToken(), preparedOrderVo, new Callback() {
  268. @Override
  269. public void onFailure(@NotNull Call call, @NotNull IOException e) {
  270. // TODO 预下单调用失败
  271. ToastUtils.make(getContext(), "请求服务器失败!网络异常!");
  272. Log.e(TAG, "onFailure: 预下单失败! call: " + call.timeout().toString(), e);
  273. LoggingUtils.sendErrorLog("业务异常: 预下单失败! call: " + call.timeout().toString(), e);
  274. }
  275. @Override
  276. public void onResponse(@NotNull Call call, @NotNull Response response) {
  277. ((MainActivity) getActivity()).runOnUiThread(() -> {
  278. try {
  279. String responseStr = ICSPClient.isSuccessfulAndParseResponse(response);
  280. if (!StringUtils.isNullOrEmpty(responseStr)) {
  281. ObjectMapper objectMapper = JacksonUtils.objectmapper;
  282. ResponseData<PreparedOrderResponseVo> responseData = objectMapper.readValue(responseStr, new TypeReference<ResponseData<PreparedOrderResponseVo>>() {
  283. });
  284. data = responseData.getData();
  285. // 响应信息
  286. if (responseData.getCode().equals(ICSPConstant.OK)) {
  287. bundle.putString("preparedOrderResponse", objectMapper.writeValueAsString(data));
  288. bundle.putString("takeNo", mailNo);
  289. bundle.putString("sectionType", finalSectionType);
  290. // 跳转到确认投递
  291. try {
  292. MainActivity activity = (MainActivity) getActivity();
  293. activity.getBundleMap().put(InputInfoKeyBoardFragment.class.getName(), bundle);
  294. } catch (RuntimeException e) {
  295. Log.e(TAG, "onResponse: InputInfoFragment页面获取SendInfoConfirmFragment传值错误! ", e);
  296. LoggingUtils.sendErrorLog("业务异常: InputInfoFragment页面获取SendInfoConfirmFragment传值错误! ", e);
  297. }
  298. if (null != timer) {
  299. timer.cancel();
  300. }
  301. NavUtils.navigate(InputInfoKeyBoardFragment.this, R.id.action_InputInfoKeyBoardFragment_to_sendInfoConfirmFragment);
  302. }
  303. Log.i(TAG, "onResponse: ICSP返回码: " + responseData.getCode() + ", 返回信息: " + responseData.getMsg());
  304. ToastUtils.make(getContext(), responseData.getMsg());
  305. } else {
  306. ToastUtils.make(getContext(), "服务器异常!请稍后重试!");
  307. }
  308. } catch (JsonProcessingException e) {
  309. Log.e(TAG, "onResponse: 预下单转换成JSON出错! ", e);
  310. LoggingUtils.sendErrorLog("业务异常: 预下单转换成JSON出错! ", e);
  311. } catch (RuntimeException e) {
  312. Log.e(TAG, "onResponse: 预下单失败! ", e);
  313. LoggingUtils.sendErrorLog("业务异常: 预下单失败! ", e);
  314. }
  315. });
  316. }
  317. });
  318. }
  319. });
  320. }
  321. // 数字输入 5 手机号 4 面单号
  322. binding.delivererPhoneConfirm.setOnFocusChangeListener((view1, hasFocus) -> {
  323. if(!hasFocus){
  324. return;
  325. }
  326. if (hasFocus) {
  327. binding.keyBoard.inputButton0.setOnClickListener(v -> {
  328. int length = binding.delivererPhoneConfirm.getText().length();
  329. if (length >= 11) {
  330. ToastUtils.make(getContext(), "手机号不能超过11位! ");
  331. return;
  332. }
  333. int start = binding.delivererPhoneConfirm.getSelectionStart();
  334. binding.delivererPhoneConfirm.getText().insert(start, "0");
  335. });
  336. binding.keyBoard.inputButton1.setOnClickListener(v -> {
  337. int length = binding.delivererPhoneConfirm.getText().length();
  338. if (length >= 11) {
  339. ToastUtils.make(getContext(), "手机号不能超过11位! ");
  340. return;
  341. }
  342. int start = binding.delivererPhoneConfirm.getSelectionStart();
  343. binding.delivererPhoneConfirm.getText().insert(start, "1");
  344. });
  345. binding.keyBoard.inputButton2.setOnClickListener(v -> {
  346. int length = binding.delivererPhoneConfirm.getText().length();
  347. if (length >= 11) {
  348. ToastUtils.make(getContext(), "手机号不能超过11位! ");
  349. return;
  350. }
  351. int start = binding.delivererPhoneConfirm.getSelectionStart();
  352. binding.delivererPhoneConfirm.getText().insert(start, "2");
  353. });
  354. binding.keyBoard.inputButton3.setOnClickListener(v -> {
  355. int length = binding.delivererPhoneConfirm.getText().length();
  356. if (length >= 11) {
  357. ToastUtils.make(getContext(), "手机号不能超过11位! ");
  358. return;
  359. }
  360. int start = binding.delivererPhoneConfirm.getSelectionStart();
  361. binding.delivererPhoneConfirm.getText().insert(start, "3");
  362. });
  363. binding.keyBoard.inputButton4.setOnClickListener(v -> {
  364. int length = binding.delivererPhoneConfirm.getText().length();
  365. if (length >= 11) {
  366. ToastUtils.make(getContext(), "手机号不能超过11位! ");
  367. return;
  368. }
  369. int start = binding.delivererPhoneConfirm.getSelectionStart();
  370. binding.delivererPhoneConfirm.getText().insert(start, "4");
  371. });
  372. binding.keyBoard.inputButton5.setOnClickListener(v -> {
  373. int length = binding.delivererPhoneConfirm.getText().length();
  374. if (length >= 11) {
  375. ToastUtils.make(getContext(), "手机号不能超过11位! ");
  376. return;
  377. }
  378. int start = binding.delivererPhoneConfirm.getSelectionStart();
  379. binding.delivererPhoneConfirm.getText().insert(start, "5");
  380. });
  381. binding.keyBoard.inputButton6.setOnClickListener(v -> {
  382. int length = binding.delivererPhoneConfirm.getText().length();
  383. if (length >= 11) {
  384. ToastUtils.make(getContext(), "手机号不能超过11位! ");
  385. return;
  386. }
  387. int start = binding.delivererPhoneConfirm.getSelectionStart();
  388. binding.delivererPhoneConfirm.getText().insert(start, "6");
  389. });
  390. binding.keyBoard.inputButton7.setOnClickListener(v -> {
  391. int length = binding.delivererPhoneConfirm.getText().length();
  392. if (length >= 11) {
  393. ToastUtils.make(getContext(), "手机号不能超过11位! ");
  394. return;
  395. }
  396. int start = binding.delivererPhoneConfirm.getSelectionStart();
  397. binding.delivererPhoneConfirm.getText().insert(start, "7");
  398. });
  399. binding.keyBoard.inputButton8.setOnClickListener(v -> {
  400. int length = binding.delivererPhoneConfirm.getText().length();
  401. if (length >= 11) {
  402. ToastUtils.make(getContext(), "手机号不能超过11位! ");
  403. return;
  404. }
  405. int start = binding.delivererPhoneConfirm.getSelectionStart();
  406. binding.delivererPhoneConfirm.getText().insert(start, "8");
  407. });
  408. binding.keyBoard.inputButton9.setOnClickListener(v -> {
  409. int length = binding.delivererPhoneConfirm.getText().length();
  410. if (length >= 11) {
  411. ToastUtils.make(getContext(), "手机号不能超过11位");
  412. return;
  413. }
  414. int start = binding.delivererPhoneConfirm.getSelectionStart();
  415. binding.delivererPhoneConfirm.getText().insert(start, "9");
  416. });
  417. binding.keyBoard.inputButtonCancel.setOnClickListener(v -> {
  418. Editable text = binding.delivererPhoneConfirm.getText();
  419. int start = binding.delivererPhoneConfirm.getSelectionStart();
  420. if (text.length() > 0) {
  421. if (start > 0) {
  422. text.delete(start - 1, start);
  423. }
  424. binding.delivererPhoneConfirm.setText(text, TextView.BufferType.EDITABLE);
  425. binding.delivererPhoneConfirm.setSelection(start - 1 < 0 ? text.length() : start - 1);
  426. }
  427. });
  428. // 长按删除
  429. binding.keyBoard.inputButtonCancel.setOnLongClickListener(v -> {
  430. binding.delivererPhoneConfirm.getText().clear();
  431. return false;
  432. });
  433. }
  434. });
  435. binding.mailNo.setOnFocusChangeListener((view1, hasFocus) -> {
  436. AtomicBoolean caseSmallFlag = new AtomicBoolean(true);
  437. if(!hasFocus){
  438. return;
  439. }
  440. binding.keyBoard.inputButton0.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, "0");
  451. });
  452. binding.keyBoard.inputButton1.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, "1");
  463. });
  464. binding.keyBoard.inputButton2.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, "2");
  475. });
  476. binding.keyBoard.inputButton3.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, "3");
  487. });
  488. binding.keyBoard.inputButton4.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, "4");
  499. });
  500. binding.keyBoard.inputButton5.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, "5");
  511. });
  512. binding.keyBoard.inputButton6.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, "6");
  523. });
  524. binding.keyBoard.inputButton7.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, "7");
  535. });
  536. binding.keyBoard.inputButton8.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, "8");
  547. });
  548. binding.keyBoard.inputButton9.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, "9");
  559. });
  560. // todo:绑定字母按键
  561. binding.keyBoard.inputButtonQ.setOnClickListener(v -> {
  562. if(!hasFocus){
  563. return;
  564. }
  565. int length = binding.mailNo.getText().length();
  566. if (length >= 16) {
  567. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  568. return;
  569. }
  570. int start = binding.mailNo.getSelectionStart();
  571. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "Q" : "q");
  572. });
  573. binding.keyBoard.inputButtonW.setOnClickListener(v -> {
  574. if(!hasFocus){
  575. return;
  576. }
  577. int length = binding.mailNo.getText().length();
  578. if (length >= 16) {
  579. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  580. return;
  581. }
  582. int start = binding.mailNo.getSelectionStart();
  583. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "W" : "w");
  584. });
  585. binding.keyBoard.inputButtonE.setOnClickListener(v -> {
  586. if(!hasFocus){
  587. return;
  588. }
  589. int length = binding.mailNo.getText().length();
  590. if (length >= 16) {
  591. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  592. return;
  593. }
  594. int start = binding.mailNo.getSelectionStart();
  595. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "E" : "e");
  596. });
  597. binding.keyBoard.inputButtonR.setOnClickListener(v -> {
  598. if(!hasFocus){
  599. return;
  600. }
  601. int length = binding.mailNo.getText().length();
  602. if (length >= 16) {
  603. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  604. return;
  605. }
  606. int start = binding.mailNo.getSelectionStart();
  607. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "R" : "r");
  608. });
  609. binding.keyBoard.inputButtonT.setOnClickListener(v -> {
  610. if(!hasFocus){
  611. return;
  612. }
  613. int length = binding.mailNo.getText().length();
  614. if (length >= 16) {
  615. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  616. return;
  617. }
  618. int start = binding.mailNo.getSelectionStart();
  619. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "T" : "t");
  620. });
  621. binding.keyBoard.inputButtonY.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, caseSmallFlag.get() ? "Y" : "y");
  632. });
  633. binding.keyBoard.inputButtonU.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, caseSmallFlag.get() ? "U" : "u");
  644. });
  645. binding.keyBoard.inputButtonI.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, caseSmallFlag.get() ? "I" : "i");
  656. });
  657. binding.keyBoard.inputButtonO.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, caseSmallFlag.get() ? "O" : "o");
  668. });
  669. binding.keyBoard.inputButtonP.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, caseSmallFlag.get() ? "P" : "p");
  680. });
  681. binding.keyBoard.inputButtonA.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, caseSmallFlag.get() ? "A" : "a");
  692. });
  693. binding.keyBoard.inputButtonS.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, caseSmallFlag.get() ? "S" : "s");
  704. });
  705. binding.keyBoard.inputButtonD.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, caseSmallFlag.get() ? "D" : "d");
  716. });
  717. binding.keyBoard.inputButtonF.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, caseSmallFlag.get() ? "F" : "f");
  728. });
  729. binding.keyBoard.inputButtonG.setOnClickListener(v -> {
  730. if(!hasFocus){
  731. return;
  732. }
  733. int length = binding.mailNo.getText().length();
  734. if (length >= 16) {
  735. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  736. return;
  737. }
  738. int start = binding.mailNo.getSelectionStart();
  739. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "G" : "g");
  740. });
  741. binding.keyBoard.inputButtonH.setOnClickListener(v -> {
  742. if(!hasFocus){
  743. return;
  744. }
  745. int length = binding.mailNo.getText().length();
  746. if (length >= 16) {
  747. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  748. return;
  749. }
  750. int start = binding.mailNo.getSelectionStart();
  751. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "H" : "h");
  752. });
  753. binding.keyBoard.inputButtonJ.setOnClickListener(v -> {
  754. if(!hasFocus){
  755. return;
  756. }
  757. int length = binding.mailNo.getText().length();
  758. if (length >= 16) {
  759. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  760. return;
  761. }
  762. int start = binding.mailNo.getSelectionStart();
  763. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "J" : "j");
  764. });
  765. binding.keyBoard.inputButtonK.setOnClickListener(v -> {
  766. if(!hasFocus){
  767. return;
  768. }
  769. int length = binding.mailNo.getText().length();
  770. if (length >= 16) {
  771. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  772. return;
  773. }
  774. int start = binding.mailNo.getSelectionStart();
  775. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "K" : "k");
  776. });
  777. binding.keyBoard.inputButtonL.setOnClickListener(v -> {
  778. if(!hasFocus){
  779. return;
  780. }
  781. int length = binding.mailNo.getText().length();
  782. if (length >= 16) {
  783. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  784. return;
  785. }
  786. int start = binding.mailNo.getSelectionStart();
  787. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "L" : "l");
  788. });
  789. binding.keyBoard.inputButtonZ.setOnClickListener(v -> {
  790. if(!hasFocus){
  791. return;
  792. }
  793. int length = binding.mailNo.getText().length();
  794. if (length >= 16) {
  795. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  796. return;
  797. }
  798. int start = binding.mailNo.getSelectionStart();
  799. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "Z" : "z");
  800. });
  801. binding.keyBoard.inputButtonX.setOnClickListener(v -> {
  802. if(!hasFocus){
  803. return;
  804. }
  805. int length = binding.mailNo.getText().length();
  806. if (length >= 16) {
  807. ToastUtils.make(getContext(), "面单号最多不能超过16位!");
  808. return;
  809. }
  810. int start = binding.mailNo.getSelectionStart();
  811. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "X" : "x");
  812. });
  813. binding.keyBoard.inputButtonC.setOnClickListener(v -> {
  814. if(!hasFocus){
  815. return;
  816. }
  817. int length = binding.mailNo.getText().length();
  818. if (length >= 16) {
  819. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  820. return;
  821. }
  822. int start = binding.mailNo.getSelectionStart();
  823. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "C" : "c");
  824. });
  825. binding.keyBoard.inputButtonV.setOnClickListener(v -> {
  826. if(!hasFocus){
  827. return;
  828. }
  829. int length = binding.mailNo.getText().length();
  830. if (length >= 16) {
  831. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  832. return;
  833. }
  834. int start = binding.mailNo.getSelectionStart();
  835. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "V" : "v");
  836. });
  837. binding.keyBoard.inputButtonB.setOnClickListener(v -> {
  838. if(!hasFocus){
  839. return;
  840. }
  841. int length = binding.mailNo.getText().length();
  842. if (length >= 16) {
  843. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  844. return;
  845. }
  846. int start = binding.mailNo.getSelectionStart();
  847. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "B" : "b");
  848. });
  849. binding.keyBoard.inputButtonN.setOnClickListener(v -> {
  850. if(!hasFocus){
  851. return;
  852. }
  853. int length = binding.mailNo.getText().length();
  854. if (length >= 16) {
  855. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  856. return;
  857. }
  858. int start = binding.mailNo.getSelectionStart();
  859. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "N" : "n");
  860. });
  861. binding.keyBoard.inputButtonM.setOnClickListener(v -> {
  862. if(!hasFocus){
  863. return;
  864. }
  865. int length = binding.mailNo.getText().length();
  866. if (length >= 16) {
  867. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  868. return;
  869. }
  870. int start = binding.mailNo.getSelectionStart();
  871. binding.mailNo.getText().insert(start, caseSmallFlag.get() ? "M" : "m");
  872. });
  873. // 符号
  874. binding.keyBoard.symbolButton1.setOnClickListener(v -> {
  875. if(!hasFocus){
  876. return;
  877. }
  878. int length = binding.mailNo.getText().length();
  879. if (length >= 16) {
  880. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  881. return;
  882. }
  883. int start = binding.mailNo.getSelectionStart();
  884. binding.mailNo.getText().insert(start, "-");
  885. });
  886. binding.keyBoard.symbolButton2.setOnClickListener(v -> {
  887. if(!hasFocus){
  888. return;
  889. }
  890. int length = binding.mailNo.getText().length();
  891. if (length >= 16) {
  892. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  893. return;
  894. }
  895. int start = binding.mailNo.getSelectionStart();
  896. binding.mailNo.getText().insert(start, "/");
  897. });
  898. binding.keyBoard.symbolButton3.setOnClickListener(v -> {
  899. if(!hasFocus){
  900. return;
  901. }
  902. int length = binding.mailNo.getText().length();
  903. if (length >= 16) {
  904. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  905. return;
  906. }
  907. int start = binding.mailNo.getSelectionStart();
  908. binding.mailNo.getText().insert(start, ":");
  909. });
  910. binding.keyBoard.symbolButton4.setOnClickListener(v -> {
  911. if(!hasFocus){
  912. return;
  913. }
  914. int length = binding.mailNo.getText().length();
  915. if (length >= 16) {
  916. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  917. return;
  918. }
  919. int start = binding.mailNo.getSelectionStart();
  920. binding.mailNo.getText().insert(start, "+");
  921. });
  922. binding.keyBoard.symbolButton5.setOnClickListener(v -> {
  923. if(!hasFocus){
  924. return;
  925. }
  926. int length = binding.mailNo.getText().length();
  927. if (length >= 16) {
  928. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  929. return;
  930. }
  931. int start = binding.mailNo.getSelectionStart();
  932. binding.mailNo.getText().insert(start, "(");
  933. });
  934. binding.keyBoard.symbolButton6.setOnClickListener(v -> {
  935. if(!hasFocus){
  936. return;
  937. }
  938. int length = binding.mailNo.getText().length();
  939. if (length >= 16) {
  940. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  941. return;
  942. }
  943. int start = binding.mailNo.getSelectionStart();
  944. binding.mailNo.getText().insert(start, ")");
  945. });
  946. binding.keyBoard.symbolButton7.setOnClickListener(v -> {
  947. if(!hasFocus){
  948. return;
  949. }
  950. int length = binding.mailNo.getText().length();
  951. if (length >= 16) {
  952. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  953. return;
  954. }
  955. int start = binding.mailNo.getSelectionStart();
  956. binding.mailNo.getText().insert(start, "#");
  957. });
  958. binding.keyBoard.symbolButton8.setOnClickListener(v -> {
  959. if(!hasFocus){
  960. return;
  961. }
  962. int length = binding.mailNo.getText().length();
  963. if (length >= 16) {
  964. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  965. return;
  966. }
  967. int start = binding.mailNo.getSelectionStart();
  968. binding.mailNo.getText().insert(start, "@");
  969. });
  970. binding.keyBoard.symbolButton9.setOnClickListener(v -> {
  971. if(!hasFocus){
  972. return;
  973. }
  974. int length = binding.mailNo.getText().length();
  975. if (length >= 16) {
  976. ToastUtils.make(getContext(), "面单号最多不能超过16位! ");
  977. return;
  978. }
  979. int start = binding.mailNo.getSelectionStart();
  980. binding.mailNo.getText().insert(start, ".");
  981. });
  982. binding.keyBoard.symbolButton10.setOnClickListener(v -> {
  983. if(!hasFocus){
  984. return;
  985. }
  986. int length = binding.mailNo.getText().length();
  987. if (length >= 16) {
  988. ToastUtils.make(getContext(), "?");
  989. return;
  990. }
  991. int start = binding.mailNo.getSelectionStart();
  992. binding.mailNo.getText().insert(start, "!");
  993. });
  994. // 大小写按键绑定 默认大写
  995. binding.keyBoard.inputButtonCaseSmall.setOnClickListener(v -> {
  996. if (caseSmallFlag.get()) {
  997. caseSmallFlag.set(false);
  998. } else {
  999. caseSmallFlag.set(true);
  1000. }
  1001. binding.keyBoard.inputButtonCaseSmall.setText(caseSmallFlag.get() ? "大写" : "小写");
  1002. // 设置键盘字母大小写
  1003. binding.keyBoard.inputButtonQ.setText(caseSmallFlag.get() ? "Q" : "q");
  1004. binding.keyBoard.inputButtonW.setText(caseSmallFlag.get() ? "W" : "w");
  1005. binding.keyBoard.inputButtonE.setText(caseSmallFlag.get() ? "E" : "e");
  1006. binding.keyBoard.inputButtonR.setText(caseSmallFlag.get() ? "R" : "r");
  1007. binding.keyBoard.inputButtonT.setText(caseSmallFlag.get() ? "T" : "t");
  1008. binding.keyBoard.inputButtonY.setText(caseSmallFlag.get() ? "Y" : "y");
  1009. binding.keyBoard.inputButtonU.setText(caseSmallFlag.get() ? "U" : "u");
  1010. binding.keyBoard.inputButtonI.setText(caseSmallFlag.get() ? "I" : "i");
  1011. binding.keyBoard.inputButtonO.setText(caseSmallFlag.get() ? "O" : "o");
  1012. binding.keyBoard.inputButtonP.setText(caseSmallFlag.get() ? "P" : "p");
  1013. binding.keyBoard.inputButtonA.setText(caseSmallFlag.get() ? "A" : "a");
  1014. binding.keyBoard.inputButtonS.setText(caseSmallFlag.get() ? "S" : "s");
  1015. binding.keyBoard.inputButtonD.setText(caseSmallFlag.get() ? "D" : "d");
  1016. binding.keyBoard.inputButtonF.setText(caseSmallFlag.get() ? "F" : "f");
  1017. binding.keyBoard.inputButtonG.setText(caseSmallFlag.get() ? "G" : "g");
  1018. binding.keyBoard.inputButtonH.setText(caseSmallFlag.get() ? "H" : "h");
  1019. binding.keyBoard.inputButtonJ.setText(caseSmallFlag.get() ? "J" : "j");
  1020. binding.keyBoard.inputButtonK.setText(caseSmallFlag.get() ? "K" : "k");
  1021. binding.keyBoard.inputButtonL.setText(caseSmallFlag.get() ? "L" : "l");
  1022. binding.keyBoard.inputButtonZ.setText(caseSmallFlag.get() ? "Z" : "z");
  1023. binding.keyBoard.inputButtonX.setText(caseSmallFlag.get() ? "X" : "x");
  1024. binding.keyBoard.inputButtonC.setText(caseSmallFlag.get() ? "C" : "c");
  1025. binding.keyBoard.inputButtonV.setText(caseSmallFlag.get() ? "V" : "v");
  1026. binding.keyBoard.inputButtonB.setText(caseSmallFlag.get() ? "B" : "b");
  1027. binding.keyBoard.inputButtonN.setText(caseSmallFlag.get() ? "N" : "n");
  1028. binding.keyBoard.inputButtonM.setText(caseSmallFlag.get() ? "M" : "m");
  1029. });
  1030. binding.keyBoard.inputButtonCancel.setOnClickListener(v -> {
  1031. Editable text = binding.mailNo.getText();
  1032. int start = binding.mailNo.getSelectionStart();
  1033. if (text.length() > 0) {
  1034. if (start > 0) {
  1035. text.delete(start - 1, start);
  1036. }
  1037. binding.mailNo.setText(text, TextView.BufferType.EDITABLE);
  1038. binding.mailNo.setSelection(start - 1 < 0 ? text.length() : start - 1);
  1039. }
  1040. });
  1041. // 长按删除
  1042. binding.keyBoard.inputButtonCancel.setOnLongClickListener(v -> {
  1043. binding.mailNo.getText().clear();
  1044. return false;
  1045. });
  1046. });
  1047. binding.returnBtn.setOnClickListener(view1 -> {
  1048. if (null != timer) {
  1049. timer.cancel();
  1050. }
  1051. NavUtils.navigate(this, R.id.action_InputInfoKeyBoardFragment_to_chooseCabinetFragment);
  1052. });
  1053. // 默认选中运单号输入框
  1054. if (!StringUtils.isNullOrEmpty(binding.mailNo.getText().toString())) {
  1055. binding.delivererPhoneConfirm.requestFocus();
  1056. } else {
  1057. binding.mailNo.requestFocus();
  1058. }
  1059. }
  1060. private void extracted(AtomicBoolean caseSmallFlag) {
  1061. }
  1062. public PreparedOrderResponseVo getData() {
  1063. return data;
  1064. }
  1065. @Override
  1066. public void onDestroy() {
  1067. if (timer != null) {
  1068. timer.cancel();
  1069. timer = null;
  1070. }
  1071. super.onDestroy();
  1072. binding = null;
  1073. Log.i(TAG, TAG + "被销毁。。。");
  1074. }
  1075. }