相关疑难解决方法(0)

如何从AsyncTask返回一个布尔值?

我有一些EditTexts,用户输入ftp地址,用户名,密码,端口和testConnection按钮.如果连接成功建立,则返回布尔值true.

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();

                 } 
Run Code Online (Sandbox Code Playgroud)

我正在重新编写代码以使用AsyncTasks来执行各种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) {
                // …
Run Code Online (Sandbox Code Playgroud)

java android android-asynctask

23
推荐指数
3
解决办法
3万
查看次数

调用AsyncTask.get()时未显示ProgressDialog

可能重复:
AsyncTask阻止UI威胁并显示延迟的进度条

我想在从任何服务器检索JSON时显示progressDialog.所以我使用AsyncTask作为解决方案(不确定任何不同的出路).

一切都很好,ProgressDialog正常工作,直到我使用AsyncTask实例调用.get()方法.我想它会以某种方式阻止UI.这是我的AsyncTask:

public class myAsync extends AsyncTask<String, String, List> {

    String message; // for dialog message
    ProgressDialog progress; 
    Intent myIntent;
    Context ctx;

    public myAsync(String message, Context ctx) {
        this.message = message;
        this.ctx = ctx;
        progress = new ProgressDialog(ctx);
    }

    @Override
    protected void onPreExecute() { 
        progress.setMessage(message);
        progress.setIndeterminate(true);
        progress.setCancelable(false);
        progress.show();    
    }

    @Override
    protected List doInBackground(String... params) {
        //returns any list after the task
        return anyList; 
    }

    @Override
    protected void onPostExecute(List result) {
        if(progress.isShowing())
            progress.dismiss();
    }
}
Run Code Online (Sandbox Code Playgroud)

这里是调用AsyncTask的myActivity:

myAsync asyncTask = …
Run Code Online (Sandbox Code Playgroud)

android progressdialog android-asynctask

17
推荐指数
2
解决办法
2万
查看次数

AsyncTask传递自定义对象

[我有一个自定义的parcelable对象车]

我看过AsyncTask但是关于这个主题还不太清楚:

我想将一个String(它是Vehicle的Vehicle ID)传递给AsyncTask,然后在doInBackground()中我有一个方法

mRemoteInterface.getTrackHistory();
Run Code Online (Sandbox Code Playgroud)

这给了我一个ArrayList.我想在onPostExecute()中启动一个活动,其中Vehicle ID和ArrayList都是额外的.

这是我无法做到的概述.问题是我不明白将对象INTO到asynctask,然后从doInBackground()到onPostExecute()和从onPostExecute()返回到原始的执行调用.

getTrackHistory.execute(这里应该去哪里?);

private class getTrackHistory extends
AsyncTask<String, Integer, Boolean **WHAT SHOULD GO HERE?**> {

    @Override
    protected Boolean doInBackground(
            String... params) {
        try {
            String vehicleID = params[0];
            listVehicleHistory = (ArrayList<Vehicle>) mRemoteInterface.getVehicleHistory(vehicleID);
        } catch (Exception e) {

            e.printStackTrace();
        }


    }




    @Override
    protected void onProgressUpdate(Integer... progress) {

    }

    @Override
    protected void onPostExecute(Boolean worked) {

        super.onPostExecute(worked);

        Intent intent = new Intent(MainActivity.this,VehicleInfo.class);

        intent.putExtra("Vehicle ID", toReturn);
        intent.putParcelableArrayListExtra("VehicleHistory", listVehicleHistory);

        startActivity(intent);
    }
Run Code Online (Sandbox Code Playgroud)

}

java android parcelable android-asynctask

0
推荐指数
1
解决办法
3941
查看次数