相关疑难解决方法(0)

如何将OnPostExecute()的结果导入主活动,因为AsyncTask是一个单独的类?

我有这两节课.我的主要活动和扩展的一个AsyncTask,现在在我的主要活动,我需要从得到的结果OnPostExecute()AsyncTask.我怎样才能将结果传递给我的主要活动?

这是示例代码.

我的主要活动.

public class MainActivity extends Activity{

    AasyncTask asyncTask = new AasyncTask();

    @Override
    public void onCreate(Bundle aBundle) {
        super.onCreate(aBundle);            

        //Calling the AsyncTask class to start to execute.  
        asyncTask.execute(a.targetServer); 

        //Creating a TextView.
        TextView displayUI = asyncTask.dataDisplay;
        displayUI = new TextView(this);
        this.setContentView(tTextView); 
    }

}
Run Code Online (Sandbox Code Playgroud)

这是AsyncTask类

public class AasyncTask extends AsyncTask<String, Void, String> {

TextView dataDisplay; //store the data  
String soapAction = "http://sample.com"; //SOAPAction header line. 
String targetServer = "https://sampletargeturl.com"; //Target Server.

//SOAP Request.
String soapRequest …
Run Code Online (Sandbox Code Playgroud)

android android-asynctask

338
推荐指数
7
解决办法
27万
查看次数

Android开发:在单独的类文件中使用AsyncTask

我一直在玩各种试图熟悉AsyncTask的例子.到目前为止,我看到的所有示例都将AsyncTask包含在主要活动的onCreate方法中.我不太喜欢,所以我想看看将它分成自己的课程有多难.到目前为止我有这个:

主要活动

package com.example.asynctaskactivity;

import android.os.AsyncTask;
import android.os.Bundle;
import android.os.SystemClock;
import android.app.Activity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;

import com.example.asynctaskactivity.ShowDialogAsyncTask;

public class AsyncTaskActivity extends Activity {

 Button btn_start;
 ProgressBar progressBar;
 TextView txt_percentage;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        btn_start = (Button) findViewById(R.id.btn_start);
        progressBar =  (ProgressBar) findViewById(R.id.progress);
        txt_percentage= (TextView) findViewById(R.id.txt_percentage);
        Log.v("onCreate","Attempt set up button OnClickListener");
        btn_start.setOnClickListener(new View.OnClickListener() 
        { 
           @Override
           public void onClick(View v) {
               btn_start.setEnabled(false);
               new ShowDialogAsyncTask().execute();
           }
        });

        Log.v("onCreate","Success!"); 
    }
} …
Run Code Online (Sandbox Code Playgroud)

java android android-asynctask

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

Android从匿名类中获取活动

我是Android开发和Java的新手.这是基本设置:我有一个启动画面,AsyncTask用于检查服务器可用性.在这个帖子之后,我在我的活动中做了一个回调.这比做工作更有意义,OnPostExecute()因为我想在不同的活动中重用这个任务.

但是,在我的回调中,我会检查状态是否正常.如果是,它应该启动下一个活动.但是从我的回调的上下文中,我不知道如何获得我的Activity引用,我需要它作为Intent的参数.

这是OnCreate下我的Activity中的代码:

    //Check server status
    CheckServiceTask t = new CheckServiceTask(new OnTaskCompleted<ShaggyServiceStatus>() {
        @Override
        public void onTaskCompleted(ShaggyServiceStatus result) {
            Log.i(TAG, "Callback. Result: " + result.getStatus());
            ProgressBar pb = (ProgressBar) findViewById(R.id.splash_progress);
            pb.setVisibility(View.INVISIBLE);

            if (result.getStatusCode() == 999){
                TextView t = (TextView) findViewById(R.id.splash_status_text);
                t.setText(result.getStatus());
                return;
            }

            Intent i = new Intent(getActivity(), LoginActivity.class);
            startActivity(i);
            finish();

        }
    });

    t.execute();
Run Code Online (Sandbox Code Playgroud)

失败的部分是getActivity().那个电话不可用.使用this抛出错误(我理解,因为我在上下文中OnTaskCompleted).

为了完整性,这是OnTaskCompleted的接口:

public interface OnTaskCompleted<T> {
    public void onTaskCompleted(T result);
}
Run Code Online (Sandbox Code Playgroud)

这是CheckServiceTask类: …

java android android-asynctask

10
推荐指数
2
解决办法
5713
查看次数

从AsyncTask类onPostExecute方法返回值

好的,现在我有Class A一些包含一些微调器,这些值将由Class B扩展填充,AsnycTask从Web服务中获取微调器值.在B类中,我设法检索值,在Toast中显示.现在的问题是如何将这些微调器值传递回A类?

我试过了

AsyncTask RETURN值中的OnPostExcecute方法可以吗?

通过传递Class AClass B并存储该值在公共变量Class A象下面

@Override
protected void onPostExecute(String result)
{
  classA.classAvariable = result;
}
Run Code Online (Sandbox Code Playgroud)

然而,每当我尝试阅读时,classAvariable我总会得到一个NullPointer Exception.似乎变量从未分配过结果.出于可读性目的,我需要分开Class B而不是用作内联类.

我的Java程序员是什么想法?

android return-value android-asynctask

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

Android:回调AsyncTask到片段(非活动)

我试图在AsyncTask和Fragment之间实现回调,但无法找到正确的信息如何做到这一点.问题是所有回调实现都在activity和asynctask之间,但我需要在fragment和asynctask之间.有人可以给我一些小工作示例如何在没有活动的情况下实现它.我的动作结构:片段调用DialogFragment - >选择一些东西并将服务器请求发送到异步任务 - >异步任务处理所有内容并更新视图和一些变量.我的主要问题是我在onCreate中只调用一次prepareData(),当我在其他片段和返回之间走动时,我会看到旧数据.也就是说,仅仅更新asProct的onPost中的视图是不够的.有回调会更新整个变量会很好.

public class TermsAndConditionsFragment extends SherlockFragment implements OnClickListener, OnTouchListener, OnItemClickListener, onTaskListener {
 @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    fm = getSherlockActivity().getSupportFragmentManager();


    prepareData();
}

public void prepareData() {
     termsAndConditionsM = new TermsAndConditionsManager(getSherlockActivity());
    termsAndConditions = termsAndConditionsM.getTermsAndConditions();

    if (termsAndConditions != null) {
                 int totalPayments = Integer.valueOf(termsAndConditions.get(ServerAPI.NO_OF_PAYMENTS));
        if (totalPayments > 0) {
            paymentsData = termsAndConditionsM.getpayments();

            if (paymentsData != null) {

                payments = new ArrayList<Payment>();

                for (int i = 1; i <= totalPayments; i++) {
                    paymentValues = new Payment();
                    paymentValues.setPaymentID(Integer.valueOf(paymentsData.get(ServerAPI.PAYMENT_NO …
Run Code Online (Sandbox Code Playgroud)

android callback android-asynctask

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

AsyncTask将List返回给Activity

如何将AsyncTask中生成的List返回给Activity?

我的LoadStringsAsync类:

public class LoadStringsAsync extends AsyncTask<Void, Void, List<String> > {

    List<String> str;

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        ...
    }

    @Override
    protected List<String> doInBackground(Void... arg0) {
        ...
        get content from the internet
        and
        fill the list
        ...
    }

    @Override
    protected void onPostExecute(List<String> str) {
        super.onPostExecute(events);
        ...

    }
}
Run Code Online (Sandbox Code Playgroud)

我需要在我的Activity中使用List才能使用它.(不仅仅是在ListView中显示它:P)

有什么建议怎么做?:-)

谢谢到目前为止!

android android-asynctask android-activity

6
推荐指数
1
解决办法
1万
查看次数

Android加载多个标记阻止我的UI

我在markerarray列表中大约有11000个标记,当我尝试在地图中加载时,即使我使用Thread和RunOnUi线程,它也会阻塞我的UI,还有其他更好的方法可以尝试吗?

 Thread t = new Thread(new Runnable() {

                @Override
                public void run() {
                    for (int i = 0; i < list.size(); i++) {

                        markerOptionList.add(new MarkerOptions().position(
                                new LatLng(Double.parseDouble(list.get(i)
                                        .getLatitude()), Double
                                        .parseDouble(list.get(i)
                                                .getLangtitude()))).title(
                                list.get(i).getName() + "~"
                                        + list.get(i).getCity() + "~"
                                        + list.get(i).getSector() + "~"
                                        + String.valueOf(false)));
                    }

                    getActivity().runOnUiThread(new Runnable() {

                        @Override
                        public void run() {
                            addMarker();
                        }
                    });

                }
            });
            t.start();
Run Code Online (Sandbox Code Playgroud)

添加标记是我在地图中添加标记的方法

请提出更好的实施方式,谢谢

android google-maps-markers

3
推荐指数
2
解决办法
1177
查看次数

Android Generic AsyncTask类

我已经看到了这个答案: 如何将OnPostExecute()的结果导入主活动,因为AsyncTask是一个单独的类?

但这不是我要问的,因为我的调用类有多个调用AsyncTask.

我想创建一个通用AsyncTask类,它将接受URL并从给定的URL下载内容并返回下载的内容.

例:

public class MyAsyncTask extends AsyncTask<String, Void, String>{
    ProgressDialog dialog;

    protected void onPreExecute() {
        super.onPreExecute();
        dialog = ProgressDialog.show(context, "Loading", "Please wait...", true);
    }

    protected String doInBackground(String... params) {
        // do download here
    }

    protected void onPostExecute(String result) {
        super.onPostExecute(result);
        dialog.dismiss();
    }
}
Run Code Online (Sandbox Code Playgroud)

我有另一个类AsyncTask在不同的场景中调用它

public class MyClass {

    public method1(String url) {
        String result = new MyAsyncTask().execute(url).get();
    }

    public method2(String url) {
        String result = new MyAsyncTask().execute(url).get();
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道使用get() …

java android android-asynctask

2
推荐指数
1
解决办法
4807
查看次数