我有一个带导航抽屉的应用程序和一些片段。
在我的MainActivity中,我得到了实际的lat&设备的长位置。
在抽屉里的第一个片段中,我在Web服务器的数据库中加载了一些AsyncTask
对于这个要求,我需要我的Lat& 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;
}
答案 0 :(得分:0)
片段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 :(得分:0)
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参数传递给碎片
processAsync(myLatLng);