对话框对象更改对EditText的引用已更改

时间:2018-07-29 05:20:40

标签: android listview dialog

我最近遇到了一个奇怪的问题,即当Dialog对象中的editText更改时,它也在更改引用。

这种情况:我有一个包含20个项目的ListView,单击时每行都会弹出一个对话框,其中有几个TextView和editText字段,其中TextView显示与单击的行有关的信息。我正在重用创建的Dialog视图,而不是为ListView中的每一行分别创建对话框视图。 一切正常。 但是,当我在对话框中更改editText值时,我注意到Dialog对象不再引用正确的视图,因此,“确定”按钮不再关闭该对话框,这基本上意味着屏幕前面的Dialog不再是该对话框了。在我更改editText之前。 同样,这仅是第一次发生,随后的交互顺利进行而没有问题。 但是第一次互动很奇怪,会引起问题。 下面是一段代码:

public void addBuyDialogListener(ViewGroup viewGroup, final QuoteChunks secContext, final String opTyp){




    viewGroup.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            Log.i("ak","ft");
            securityHeader.setText(secContext.dpName);
            strikeAndType.setText(secContext.stkPrc +" "+ opTyp);
            ltp.setText(secContext.ltp);
            expiry.setText(secContext.dExpDt.substring(0,6));
            buyPrice.setText(secContext.ltp);

            buyDialog.setContentView(dialogView);
            //buyDialogFragment.setView(dialogView);
            Window dialogWindow = buyDialog.getWindow();
            WindowManager.LayoutParams lp = dialogWindow.getAttributes();
            lp.width = (int)(d.getWidth()*0.78);
            lp.height = (int)(d.getHeight()*0.5);
            dialogWindow.setAttributes(lp);
            buyDialog.show();

            MyObserver.isDialogOn = true;
            MyObserver.sym = secContext.sym;
            MyObserver.dialogLtp = ltp;

            buyButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {

                    Log.i("Error",quantity.getText().toString());
                    Log.i("Error","Discoveries");



                    buyDialog.dismiss();
                    Log.i("Exit",ltp.getText().toString());

                }
            });



            new Thread(new Runnable() {
                @Override
                public void run() {
                    //MyObserver observer = new MyObserver();
                    while(buyDialog.isShowing()){



                    }
                    MyObserver.isDialogOn = false;
                    MyObserver.sym = null;
                    MyObserver.dialogLtp = null;




                }
            }).start();
        }
    });

}

感谢您的帮助。

0 个答案:

没有答案