2015-05-06 30 views
1

我有一个导航抽屉和一些片段的应用程序。从活动传递变量到AsynTask

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

在我的抽屉里我在的AsyncTask一些东西从我的数据库加载在我的网络服务器

对于这个请求首先片段我需要在MainActivity我的纬度&长变量。

但我怎么能从MainActivity调用一个getLag()方法出我的AsyncTask或得到我的2变量?

我需要这就是所谓的doInBackround()

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

你是如何存储你的纬度/经度?一个'LatLng'对象? –

+0

你可以像新的'LoadEvents()。execute(“pass here”)那样传递;''对吗? –

回答

0

片段onAttach()

MainActivity mainActivity; 

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

调用类似这样的活动方法在片段中了Methode updateJSONdata变量

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

Happy_Coding ... :)

+0

我试过这个,但我总是geht错误 '引起:java.lang.NullPointerException:尝试调用虚拟方法'double [] paketname.getLatLng()'null对象引用' – Stevetro

+0

我的错,没有initalized arraylist ;-) – Stevetro

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; 

     } 
} 

调用片段的功能中有片段的方法

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

从MainActivity

myfragment.processAsync(myLatLng); 

打电话给你的方法
2 - 通过你的经纬度参数到您的片段

  • 通过你的经纬度参数的片段作为JSON字符串捆绑
  • 获取经纬度对象再次
  • 呼叫processAsync(myLatLng);