Android - 如何在启用对话框时禁用父活动

时间:2012-03-15 06:35:54

标签: android

当用户点击textEditor时,将显示对话框计算器,该时间应禁用父活动/屏幕。

这是我的代码:

txtQty.setOnFocusChangeListener(new OnFocusChangeListener() {
   public void onFocusChange(View v, boolean hasFocus) {
        if(hasFocus){
                        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(true);
                        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.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();

这是我的屏幕截图:

enter image description here

2 个答案:

答案 0 :(得分:3)

我认为在你的代码而不是dialog.setCancelable(true);使用dialog.setCancelable(false); 在ok或取消按钮onclicklistener中你必须关闭或取消对话框。

答案 1 :(得分:0)

尝试在自定义布局中使用AlertDialog,它完全符合您的要求。我将它用于EULA。

再见