Android EditText OnClickListener issue

I have an app for sale. When the user clicks on the EditText, you can view the calculator popup. In my case, when the user double-clicks on EditText onClickLister

, it only displays the pop-up calculator.

This is myEditText

    final EditText txtQty = new EditText(this);
            txtQty.setHeight(1);
            if(productList.get(i).getQty() != 0.00){
                txtQty.setText(Double.toString(productList.get(i).getQty()));
            }
            txtQty.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,42));
            txtQty.setTextSize(9);
            txtQty.setId(i);
            txtQty.setHint("0");
            txtQty.setClickable(true);
            txtQty.setSelected(true);
            txtQty.setSelectAllOnFocus(true);
            txtQty.setInputType(InputType.TYPE_NULL);
            tr.addView(txtQty); 

      

This is my code:

   txtQty.setOnClickListener(new OnClickListener() {
                public void onClick(View v) {
                    String productCode= txtCode.getText().toString();
                    double price = getProductPrice(productCode).getPrice();
                    txtPrice.setText(""+price);

                    if(invPriceEdit.equals("3")){ 
                        if(editPrice.getText().toString().equals("") || editPrice.getText().toString().equals("0.00") || editPrice.getText().toString().equals("0") || editPrice.getText().toString().equals("0.0")){
                            txtPrice.setText(""+ price);
                            editPrice.setText("" +price);
                        }else{
                            String ePrice = editPrice.getText().toString();
                            editPrice.setText("" +ePrice);
                        }
                    }


                        keyAmount = new StringBuffer();
                        if(keyAmount.length() > 0){
                            keyAmount.delete(0, keyAmount.length());
                        }

                        int[] origin = new int[2];
                        v.getLocationOnScreen(origin);
                        final int xVal = origin[0];
                        final int yVal = origin[1] ;

                        dialog = new Dialog(SalesActivityGroup.group.getParent());
                        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);

                        View vLoad = LayoutInflater.from(SalesActivityGroup.group.getParent()).inflate(R.layout.key_pad, null);
                        dialog.setContentView(vLoad);
                        android.view.WindowManager.LayoutParams lp= dialog.getWindow().getAttributes();  

                        dialog.setCancelable(true);
                        dialog.setCanceledOnTouchOutside(true);  
                        lp.x = xVal;
                        lp.y = yVal;
                        lp.width = LayoutParams.WRAP_CONTENT;
                        lp.height = LayoutParams.WRAP_CONTENT;
                        lp.gravity = Gravity.TOP | Gravity.LEFT;
                        lp.dimAmount = 0;            
                        dialog.getWindow().setAttributes(lp);
                        dialog.setCancelable(false);
                        keyamDisplay  = (TextView)dialog.findViewById(R.id.keyamDisplay);

                        Button  txtone = (Button)dialog.findViewById(R.id.txtone);
                        txtone.setOnClickListener(new OnClickListener() {
                           public void onClick(View v) {
                              keyAmount.append("1");
                              keyamDisplay.setText("" + keyAmount.toString());

                           }
                        });

                        Button  txttwo = (Button)dialog.findViewById(R.id.txttwo);
                        txttwo.setOnClickListener(new OnClickListener() {
                           public void onClick(View v) {
                              keyAmount.append("2");
                              keyamDisplay.setText("" + keyAmount.toString());

                           }
                        });

                        Button  txtthree = (Button)dialog.findViewById(R.id.txtthree);
                        txtthree.setOnClickListener(new OnClickListener() {
                           public void onClick(View v) {
                              keyAmount.append("3");
                              keyamDisplay.setText("" + keyAmount.toString());
                           }
                        });

                        Button  txtfour = (Button)dialog.findViewById(R.id.txtfour);
                        txtfour.setOnClickListener(new OnClickListener() {
                           public void onClick(View v) {
                              keyAmount.append("4");
                              keyamDisplay.setText("" + keyAmount.toString());
                           }
                        });

                        Button  txtfive = (Button)dialog.findViewById(R.id.txtfive);
                        txtfive.setOnClickListener(new OnClickListener() {
                           public void onClick(View v) {
                              keyAmount.append("5");
                              keyamDisplay.setText("" + keyAmount.toString());
                           }
                        });

                        Button  txtsix = (Button)dialog.findViewById(R.id.txtsix);
                        txtsix.setOnClickListener(new OnClickListener() {
                           public void onClick(View v) {
                              keyAmount.append("6");
                              keyamDisplay.setText("" + keyAmount.toString());
                           }
                         });

                        Button  txtseven = (Button)dialog.findViewById(R.id.txtseven);
                        txtseven.setOnClickListener(new OnClickListener() {
                           public void onClick(View v) {
                              keyAmount.append("7");
                              keyamDisplay.setText("" + keyAmount.toString());
                           }
                        });

                        Button  txteight = (Button)dialog.findViewById(R.id.txteight);
                        txteight.setOnClickListener(new OnClickListener() {
                           public void onClick(View v) {
                              keyAmount.append("8");
                              keyamDisplay.setText("" + keyAmount.toString());
                           }
                        });

                        Button  txtnine = (Button)dialog.findViewById(R.id.txtnine);
                        txtnine.setOnClickListener(new OnClickListener() {
                           public void onClick(View v) {
                              keyAmount.append("9");
                              keyamDisplay.setText("" + keyAmount.toString());
                           }
                        });

                        Button  txtZero = (Button)dialog.findViewById(R.id.txtZero);
                        txtZero.setOnClickListener(new OnClickListener() {
                           public void onClick(View v) {
                              keyAmount.append("0");
                              keyamDisplay.setText("" + keyAmount.toString());
                           }
                        });

                        Button  txtdot = (Button)dialog.findViewById(R.id.txtdot);
                        txtdot.setEnabled(false);
                        txtdot.setOnClickListener(new OnClickListener() {
                               public void onClick(View v) {
                                  keyAmount.append(".");
                                  keyamDisplay.setText("" + keyAmount.toString());
                               }
                        });

                        Button  diaDelete = (Button)dialog.findViewById(R.id.diaDelete);
                        diaDelete.setOnClickListener(new OnClickListener() {
                           public void onClick(View v) {
                             if(keyAmount.length() > 0){
                                keyAmount.delete(keyAmount.length()-1, keyAmount.length());
                            }
                                keyamDisplay.setText("" + keyAmount.toString());
                           }
                        });

                        ImageButton imageSmileExit = (ImageButton)dialog.findViewById(R.id.imageSmileExit);
                        imageSmileExit.setOnClickListener(new OnClickListener() {
                            public void onClick(View v) {
                                dialog.dismiss();
                            }
                        });

                        Button  txtDialogOK = (Button)dialog.findViewById(R.id.txtDialogOK);
                        txtDialogOK.setOnClickListener(new OnClickListener() {
                           public void onClick(View v) {
                               dialog.dismiss();
                         }

                      });
                    dialog.show();
                    getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
                }
                }

      

This is a problem for Selling Rep. They want to double click on each clcik product.

I want to display a popup calculator when the user selects a textEditor. (No double click required).

This is my code:

       final EditText txtQty = new EditText(this);
            txtQty.setHeight(1);
            if(productList.get(i).getQty() != 0.00){
                txtQty.setText(Double.toString(productList.get(i).getQty()));
            }
            txtQty.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,42));
            txtQty.setTextSize(9);
            txtQty.setId(i);
            txtQty.setHint("0");
            txtQty.setInputType(InputType.TYPE_NULL);
            tr.addView(txtQty); 

      

Problem:

`TableLayout contains a list of product details when the user clicks on a Qty, this is a popup calculator after entering a value, it will clear the Focus on that EditText qty row and jump to the first Row EditText '

this is my screen image

picture of my screen

+3


source to share


6 answers


I did using setOnTouchListener



    disValEdit.setOnTouchListener(new OnTouchListener() {
                public boolean onTouch(View v, MotionEvent event) {
                    if(event.getAction() == MotionEvent.ACTION_UP) { } });

      

+3


source


why are you adding onClickEvent

to your EditText,



It makes sense for the EditText to use onFocusChangeListener()

that will launch the dialog as soon as the edittext receives focus. In onFocusChangeListener()

you can check if EditText

focus gains or focus is lost.

+6


source


If it looks like you never want the user to enter this value through the KeyBoard and want the user to enter the value from the dialog.

Then why use EditText

, you may have TextView

to give it the correct background and text font.

And then write an onClickListener for that TextView

+2


source


You can try adding this to your code (on the click event):

EditText yourEditText= (EditText) findViewById(R.id.yourEditText);
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(yourEditText, InputMethodManager.SHOW_IMPLICIT);

      

And it can also be a problem, maybe somewhere in your XML files, it says <requestFocus />

. remove this

+1


source


Try to use

txtQty.setEditable(false);
txtQty.setFocusable(false);

      

+1


source


If I understand your question correctly, you mean "Do sth" when the user "double-clicks" on the EditText.

Not sure if this is the best solution, Here is a sample for that. Mimic "double clicks" on a 500ms countdown.

private EditText ed1;
private CountDownTimer timer;
private Boolean isWaiting = false;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    ed1 = (EditText) findViewById(R.id.editText1);
    timer = new CountDownTimer(500, 500) {


        @Override
        public void onTick(long millisUntilFinished) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onFinish() {
            isWaiting = false;

        }
    };

    ed1.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {

            if(isWaiting) {
                isWaiting = false;
                timer.cancel();
                // TODO: Pop Up Calculator
                Toast.makeText(getApplicationContext(), "Pop", Toast.LENGTH_LONG).show();
            } else {
                isWaiting = true;
                timer.start();
            }

        }
    });
  }

      

0


source







All Articles