各位大大好,我碰到一个问题 就是 onItemSelectd中 写了一点查询代码 然后我本意是想在
查询之前弹出信息提示框,然后 查询完成之后 关闭提示框 ,但是出现的效果和我预想的不一样(onItemSelected 结束之后才弹出框并马上结束掉弹出框了.相当于没弹出一样的效果,之后我把关闭代码去掉之后的效果就是事件结束才弹出提示框)。这个问题纠结了我一晚上了。各位大大有没有好的解决办法呢,小弟在这里诚恳请求能给个思路,谢谢了

解决方案 »

  1.   

    onItemSelectd中,弹出对话框,并开启一个线程(Runnable或Thread),进行查询操作线程中进行查询操作,结束后通知主线程,关闭对话框就行!
    楼主试试吧!
      

  2.   

    有些平台支持阻塞的对话框方式像showModal方法,Android没这种阻塞的对话框。
    可以在弹出对话框内比如确定键按下内处理查询.或用activity弹出信息提示框,可以使用startActivityForResult调用,重写onActivityResult继续查询。
      

  3.   

    我昨天晚上写的时候 ,所有的提示框都用上了,没有 像WINDOWS那样可以弹出信息提示框 ,代码继续执行的模式。。苦恼
      

  4.   


    用Handler传递消息message,并在handMessage中接收消息并处理
      

  5.   

    public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
    long arg3) {
    //m_ProgressDialog = new ProgressDialog(this);



    ParamCollection pc = null;
    String[] realValue = null;
    ArrayAdapter carDropListInfo = null;
    String valueList = "";
    String key = "";
    // TODO Auto-generated method stub
    String adapterViewKey = arg0.getContentDescription().toString();
    if (arg1 instanceof TextView) {
    key = ((TextView) arg1).getText().toString();
    }

    //此处之前是 弹出 提示框 
       
    try {
    if (adapterViewKey == "CarBrand") {

    if (key.length() > 0) {
    // m_Baseinfoview
    pc = new ParamCollection("P_BrandSerialModelBaseData_Query");
    Carseries carseries = new Carseries();
    pc.Add("BaseDataType", "车辆系列");
    pc.Add("PointCode", LoginInfo.PointCode);
    pc.Add("CarBrand", key);
    valueList = GeneralWebServicesAccess.getInstance().GetData(
    "GetStringDropListValue", pc.GetXml());
    realValue = carseries.Analysisxml(valueList);
    carDropListInfo = new ArrayAdapter<String>(m_Baseinfoview,
    android.R.layout.simple_spinner_item, realValue);
    // 绑定车辆型号
    ((Spinner) m_Baseinfoview.findViewById(R.id.series))
    .setAdapter(carDropListInfo);
    ((Spinner) m_Baseinfoview.findViewById(R.id.series))
    .setTag(key);
    }
    } else if (adapterViewKey == "CarSerial") {


    pc = new ParamCollection("P_BrandSerialModelBaseData_Query");
    CarModelBean carModelBean = new CarModelBean();
    pc.Add("BaseDataType", "车辆型号");
    pc.Add("PointCode", LoginInfo.PointCode);
    pc.Add("CarBrand", arg0.getTag().toString());
    pc.Add("CarSerial", key);
    valueList = GeneralWebServicesAccess.getInstance().GetData(
    "GetStringDropListValue", pc.GetXml());
    realValue = carModelBean.Analysisxml(valueList);
    carDropListInfo = new ArrayAdapter<String>(this,
    android.R.layout.simple_spinner_item, realValue);
    // 绑定车辆型号
    ((Spinner) m_Baseinfoview.findViewById(R.id.carsmodelspinner))
    .setAdapter(carDropListInfo);

    }
    } catch (Exception e) {
    // TODO: handle exception
    } finally {
    //此处之前是 关闭 提示框 
    }
    }
      

  6.   

    楼主希望可以帮到你 
            //我写了一个窗口 当你须要打开窗口的时候调用 关闭窗口的时候 监听按键
    public void createDialog() {
    AlertDialog.Builder builder = new Builder(mContext);
    builder.setMessage("弹出一个对话框");
    builder.setTitle("对话框标题");
    builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int which) {
    //在这里添加点击确定后逻辑
    dialog.dismiss();
    }
    });
              builder.create().show();
    }
      

  7.   

    ProgressDialog m_ProgressDialog;
    Handler m_Handler= new Handler(){
    public void handleMessage(Message msg) {
    // TODO Auto-generated method stub
    switch(msg.what){
    case -1:
    if(m_ProgressDialog!=null)
    m_ProgressDialog.dismiss();
    break;
    case 0:
    carDropListInfo = new ArrayAdapter<String>(m_Baseinfoview,
    android.R.layout.simple_spinner_item, realValue);
    // 绑定车辆型号
    ((Spinner) m_Baseinfoview.findViewById(R.id.series))
    .setAdapter(carDropListInfo);
    ((Spinner) m_Baseinfoview.findViewById(R.id.series))
    .setTag(key);
    break;
    case 1:
    carDropListInfo = new ArrayAdapter<String>(m_Baseinfoview,
    android.R.layout.simple_spinner_item, realValue);
    // 绑定车辆型号
    ((Spinner) m_Baseinfoview.findViewById(R.id.carsmodelspinner))
    .setAdapter(carDropListInfo);
    break;
    case 100:
    if(m_ProgressDialog!= null)
    m_ProgressDialog.show();
    break;
    }
    }
    };

    ParamCollection pc = null;
    String[] realValue = null;
    ArrayAdapter carDropListInfo = null;
    String valueList = "";
    String key = "";
    String adapterViewKey = "";
    String Tag = "";
    public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
    long arg3) {
    adapterViewKey = arg0.getContentDescription().toString();
    if(arg0!=null && arg0.getTag() != null)
    Tag = arg0.getTag().toString();
    if (arg1 instanceof TextView) {
    key = ((TextView) arg1).getText().toString();
    }

    m_ProgressDialog = new ProgressDialog(this);
    m_ProgressDialog.setTitle("查询数据");
    m_ProgressDialog.setMessage("正在查询内容项......");


    new Thread(new Runnable() {
    @Override
    public void run() {
    // TODO Auto-generated method stub try {
    if (adapterViewKey == "CarBrand") {

    if (key.length() > 0) {
    // m_Baseinfoview
    pc = new ParamCollection("P_BrandSerialModelBaseData_Query");
    Carseries carseries = new Carseries();
    pc.Add("BaseDataType", "车辆系列");
    pc.Add("PointCode", LoginInfo.PointCode);
    pc.Add("CarBrand", key);
    valueList = GeneralWebServicesAccess.getInstance().GetData(
    "GetStringDropListValue", pc.GetXml());
    realValue = carseries.Analysisxml(valueList);
    m_Handler.sendEmptyMessage(0);
    }
    } else if (adapterViewKey == "CarSerial") {
    m_Handler.sendEmptyMessage(100);
    pc = new ParamCollection("P_BrandSerialModelBaseData_Query");
    CarModelBean carModelBean = new CarModelBean();
    pc.Add("BaseDataType", "车辆型号");
    pc.Add("PointCode", LoginInfo.PointCode);
    pc.Add("CarBrand",Tag );
    pc.Add("CarSerial", key);
    valueList = GeneralWebServicesAccess.getInstance().GetData(
    "GetStringDropListValue", pc.GetXml());
    realValue = carModelBean.Analysisxml(valueList);

    m_Handler.sendEmptyMessage(1);
    }
    } catch (Exception e) {
    // TODO: handle exception
    } finally {
    m_Handler.sendEmptyMessage(-1);
    }
    }
    }).start(); }