我最近遇到了一个奇怪的问题,即当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();
}
});
}
感谢您的帮助。