将 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);
我有一个带导航抽屉和一些片段的应用程序。
在我的 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);