将 Activity 中的变量传递给 AsyncTask

Pass Variable from Activity to AsynTask

我有一个带导航抽屉和一些片段的应用程序。

在我的 MainActivity 中,我得到了设备的实际经纬度位置。

在抽屉中的第一个 Fragment 中,我在 AsyncTask 中加载了网络服务器数据库中的一些内容

对于这个请求,我需要来自 MainActivity 的纬度和经度变量。

但是我如何从我的 AsyncTask 中调用 MainActivity 的 getLag() 方法或获取我的 2 个变量?

我需要在 doInBackround() 中调用的 Methode updateJSONdata 中的变量

public class LoadEvents extends AsyncTask<Void, Void, Boolean>{

        Activity activity;
        ListFragment LF;
        String TAG;

        public LoadEvents(Activity A, ListFragment lf, String TAG) {

            this.TAG = TAG;
            this.LF = lf;
            this.activity = A;
        }

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


            MySwipeRefreshLayout srl = (MySwipeRefreshLayout) LF.getView().findViewById(R.id.srl);

            if(srl!=null){
                srl.setRefreshing(true);
            }

        }

        @Override
        protected Boolean doInBackground(Void... arg0) {

            updateJSONdata(TAG, activity);




            return null;

        }

片段 onAttach()

MainActivity mainActivity;

@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);
    mainActivity = (MainActivity) activity;             
}

在您的片段中像这样调用 Activity 方法

if (mainActivity != null)
    latLng = mainActivity.getLatLng(); //getLatLng() is a method defined in MainActivity

1 - 从 MainActivity 调用片段函数

public class LoadEvents extends AsyncTask<Void, LatLng, Boolean>{
 //....
    @Override
        protected Boolean doInBackground(LatLng... arg0) {
            LatLng myLatLng = arg0[0];

            updateJSONdata(TAG, activity);
            return null;

        }
}

Fragment中有一个方法

public void processAsync(LatLng latlng){
    new LoadEvents().execute(LatLng latlng);
}

从 MainActivity 调用您的方法

myfragment.processAsync(myLatLng);


2 - 将您的 LatLng 参数传递给您的片段

  • 将您的 LatLng 参数作为 Json string Bundle
  • 传递给您的片段
  • 再次获取 LatLng 对象
  • 致电processAsync(myLatLng);