为了账号安全,请及时绑定邮箱和手机立即绑定

如何从AsyncTask返回布尔值?

如何从AsyncTask返回布尔值?

手掌心 2019-06-28 14:56:01
如何从AsyncTask返回布尔值?我有一些编辑文本,用户输入一个ftp地址,用户名,密码,端口和测试连接按钮。如果成功地建立了一个连接,它将返回一个真的布尔值。boolean status = ftpConnect(_address, _username, _password,_port);                 ftpDisconnect();                 if (status == true) {                  Toast.makeText(SiteManager.this, "Connection Succesful",                  Toast.LENGTH_LONG).show();                  } else {                  Toast.makeText(SiteManager.this,                  "Connection Failed:" + status, Toast.LENGTH_LONG).show();                  }我正在重新编写代码以使用AsyncTask来执行各种ftp操作,但是如果成功地建立了连接,我如何返回一个布尔值呢?testConnection.setOnClickListener(new OnClickListener() {             @Override             public void onClick(View v) {                 _name = etSitename.getText().toString();                 _address = etAddress.getText().toString();                 _username = etUsername.getText().toString();                 _password = etPassword.getText().toString();                 _port = Integer.parseInt(etPort.getText().toString());                 AsyncConnectTask task = new AsyncConnectTask(SiteManager.this,                         _address, _username, _password, _port);                 task.execute();                 // boolean status = ftpConnect(_address, _username, _password,                 // _port);                 // ftpDisconnect();                 // if (status == true) {                 // Toast.makeText(SiteManager.this, "Connection Succesful",                 // Toast.LENGTH_LONG).show();                 // savesite.setVisibility(0);                 // } else {                 // Toast.makeText(SiteManager.this,                 // "Connection Failed:" + status, Toast.LENGTH_LONG)                 // .show();                 // }             }         });
查看完整描述

3 回答

?
墨色风雨

TA贡献1853条经验 获得超6个赞

public class AsyncConnectTask extends AsyncTask<Void, Void, Boolean> {@Override
    protected Boolean doInBackground(Void... params) {
               ....
               return true; /* or false */}@Override
    protected void onPostExecute(Boolean result) {
           // result holds what you return from doInBackground
    }}


查看完整回答
反对 回复 2019-06-28
?
慕姐8265434

TA贡献1813条经验 获得超2个赞

声明异步任务如下

public class AsyncConnectTask extends AsyncTask<Void, Void, Boolean>

第三个参数是doinback返回的结果参数。(第一个是异步任务Param,第二个是进度参数)

所以后台和onpostExecute中的操作将是

@Overrideprotected Boolean doInBackground(Void... params) {

    boolean status = ftpHelper.ftpConnect(_address, _user, _pass, _port);
    return status;}@Overrideprotected void onPostExecute(Boolean result) {
    // use the result
    super.onPostExecute(result);
    progressDialog.dismiss();};

请记住,doInBackplace返回的值由onPostExecute作为参数进行还原。所以在onPostExecute方法中使用这个。您也可以在此方法中更新您的UI。


查看完整回答
反对 回复 2019-06-28
  • 3 回答
  • 0 关注
  • 880 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信