在Activity上弹出一个自定义PickerPopupDialog(注 extends PopupWindow),
点击popupwindow中的按钮,
按钮事件里经过计算返回一个值,这个值想修改原Activity中控件EditText的值,该如何处理?
PickerPopupDialog 是写在类中的.请教解决办法,谢谢!
想过用Handler去处理,sendEmptyMessage的方法可行吗?

解决方案 »

  1.   

    不可以,我试过了,对话框是异步
    如以下代码
    PickerPopupDialog pick = new PickerPopupDialog(v, slVal,
    sithLenght);
    pick.Show();
    tp.setText(pick.tpValue);
    System.out.print(pick.tpValue + "\n");对话框弹出后,就继续走以下代码,打印出来也是空值。tpValue还没被赋值(要点击按钮才赋值)
      

  2.   

    问题已通过Handler sendMessage解决了
    不知其它高手,是用什么处理的.
    我代码共享一下:PickerPopupDialog.mHandler = new Handler() {
    public void handleMessage(Message msg) {
    switch (msg.what) {
    case pickST:
    Bundle bd = msg.getData();
    sl.setText(bd.getString("keysl"));
    break;
    }
    }
    };
            //以下写在按钮事件里的.
       Message msg = new Message();
    Bundle data = new Bundle();
    data.putString("keysl", slValue);
    msg.setData(data);
    msg.what = 1;
    mHandler.sendMessage(msg); 
      

  3.   

    你可以直接将activity内建一个Handler对象,并将该对象的引用传给PopupWindow,然后在PopupWindow的处理里post一个message或者执行一个runnable
      

  4.   

    你是意思是
    例如public class InstantOrderActivity extends Activity  
      implements android.os.Handler.Callback@Override
    public boolean handleMessage(Message msg) {
    对吧?