2015-05-06 47 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);