public class EditButtonActivity extends Activity implements View.OnClickListener { Button stock_left,stock_right; EditText editText;//假如是全局变量 命名一般是mXXXX mEt private int mNumber =0;//用来保存你的数字 String str; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_editbutton); stock_left = (Button) findViewById(R.id.stock_left); stock_right = (Button) findViewById(R.id.stock_right); //给需要点击的按钮加上监听器 一般让类去实现监听器 stock_left.setOnClickListener(this); stock_right.setOnClickListener(this); editText = (EditText) findViewById(R.id.stock_center); str = editText.getText().toString(); if (str == null && str.equals("")){ mNumber = 0; boolen(); } InputFilter[] filters = { new EditInputFilter() }; editText.setFilters(filters); // 给输入框加上监听 editText.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { //输入时的方法 if(!TextUtils.isEmpty(s)){ mNumber=Integer.parseInt(s.toString()); }else{ mNumber = 0 ; } boolen(); } @Override public void afterTextChanged(Editable s) { //监听输入框 输入后的方法 //数字总是等于你输入后的数字 try { str = editText.getText().toString(); mNumber = Integer.parseInt(str); } catch (NumberFormatException e) { e.printStackTrace(); } boolen(); } }); } public void boolen() { if (!(mNumber > 0)) {//当数字不大于0 减号无法点击 stock_left.setEnabled(false); } else { stock_left.setEnabled(true); } if (mNumber >= 100) {//假如输入大于库存,让输入框显示库存数目 stock_right.setEnabled(false); } else { stock_right.setEnabled(true); } } public void onClick(View v) { //每个可点击的view都会调用这方法 //根据id去区别不同按钮的功能 switch(v.getId()) { case R.id.stock_left : //左边是减号,每按一次数字减一(数字大于0的情况下),并且减完后要显示出来 if (mNumber > 0) { mNumber -= 1;//弄清楚 += 和-=的作用 editText.setText(String.valueOf(mNumber));//里面一定是字符串,填数字你就走上邪路了 } break; case R.id.stock_right : System.out.println("--------1--库存-1"); //右边是加号,每按一次数字加一(数字小于库存的情况下),并且减完后要显示出来 if (!TextUtils.isEmpty(editText.getText().toString())){ int count = Integer.parseInt(editText.getText().toString()); if (count<=100){ count += 1;//弄清楚 += 和-=的作用 editText.setText(String.valueOf(count));//里面一定是字符串,填数字你就走上邪路了 } }else{ if (mNumber <= 100) {//这里假设库存为100 mNumber += 1;//弄清楚 += 和-=的作用 editText.setText(String.valueOf(mNumber));//里面一定是字符串,填数字你就走上邪路了 } } break; default: break;//要清楚break的作用 和return的区别 还有个continue } } public class EditInputFilter implements InputFilter{ /** * 最大数字 */ public static final int MAX_VALUE = 100; public static final int PONTINT_LENGTH = 2; Pattern p; public EditInputFilter(){ p = Pattern.compile("[0-9]*"); } @Override public CharSequence filter(CharSequence src, int start, int end, Spanned dest, int dstart, int dend) { String oldtext = dest.toString(); System.out.println(oldtext); if ("".equals(src.toString())) { return null; } Matcher m = p.matcher(src); if(oldtext.contains(".")){ if(!m.matches()){ return null; } }else{ if(!m.matches() && !src.equals(".") ){ return null; } } if(!src.toString().equals("")){ double dold = Double.parseDouble(oldtext+src.toString()); if(dold > MAX_VALUE){ Toast.makeText(EditButtonActivity.this, "输入的最大金额不能大于"+MAX_VALUE,Toast.LENGTH_SHORT).show(); return dest.subSequence(dstart, dend); }else if(dold == MAX_VALUE){ if(src.toString().equals(".")){ Toast.makeText(EditButtonActivity.this, "输入的最大金额不能大于"+MAX_VALUE,Toast.LENGTH_SHORT).show(); return dest.subSequence(dstart, dend); } } } if(oldtext.contains(".")){ int index = oldtext.indexOf("."); int len = dend - index; if(len > PONTINT_LENGTH){ CharSequence newText = dest.subSequence(dstart, dend); return newText; } } return dest.subSequence(dstart, dend) +src.toString(); } } }
Android 库存加减
最新推荐文章于 2021-07-03 22:26:38 发布