【问题标题】:Android multiple button press opens multiple tasksAndroid多个按钮按下打开多个任务
【发布时间】:2015-09-08 05:32:34
【问题描述】:

我有一个有两个按钮的活动,其中一个是提交,另一个是取消。点击提交我有一个异步任务,点击取消我完成了活动。

下面是我提交按钮的代码。

        btnSubmit.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            if(track2data.equalsIgnoreCase("null")|| track2data == null){
                track2data = mag.sGetTrack2Data();
            }
            btnSubmit.setEnabled(false);
            btnSubmit.setClickable(false);
            btnCancel.setEnabled(false);
            btnCancel.setClickable(false);
            //changes made by akshay wrt #11983 as on 29 July 2015
            int checkconditions = conditions.checkConditions(edtPin,mContext,verifiedFinger,enterPin,verifyFinger);
            if (track2data != null && track2data.length() > 0
                    && !edtPin.getText().toString().equals("")&& checkconditions == 00) {
                  isoMsgRequest = fintransprovider.getBalanceTransaction(
                            track2data, edtPin.getText().toString());

                MessageAdaptor msgadpt = new MessageAdaptor(mContext);
                ISOMsg rIsoMsg;
                msgadpt.execute(isoMsgRequest);
                }
            }
        }
    });

MessageAdaptor 是我的asynctask 的名称。

下面是我的取消按钮的代码

        btnCancel.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            finish();
        }

    });

当我同时按下这两个按钮时两个任务都被执行,即我退出我的活动(取消)以及我遇到我的异步任务(提交)。 由于我的 asynctask 在完成其进程后有一个进度对话框,因此它会崩溃,因为它会收到 error no window attach。 ny1 能帮帮我吗?

【问题讨论】:

  • 你试过我的代码了吗?
  • 是的,但没有成功..
  • 现在有什么问题?

标签: android android-asynctask android-button android-dialog


【解决方案1】:

检查 AsyncTask 是否未在 onPostExecute(result) 中取消,如下所示:

    @Override
    protected void onPostExecute(result) {
       if (!isCancelled()) {
           if (mDialog.isShowing()) {
               mDialog.dismiss();
           }          
       }
    }

问题是您的活动在 AsyncTask 完成之前被终止,因此 AsyncTask 在完成任务后找不到启动它的活动。

【讨论】:

    【解决方案2】:

    onPostExcute 检查你的activity是否被杀死

    @Override
    protected void onPostExecute(result) {
    
           if (!getActivity().isFinishing() && mDialog != null) {
               mDialog.dismiss();
           }          
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-12
      • 2012-07-02
      相关资源
      最近更新 更多