Android的Asynctask活动的onCreate返回值

问题描述:

这里在for loop我想调用异步返回值。我想在标题后的片段中调用该值。Android的Asynctask活动的onCreate返回值

protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_show_full_map); 
Intent i = getIntent(); 
lat = i.getStringArrayListExtra("L"); 
longi = i.getStringArrayListExtra("Longitude"); 
len=lat.size(); 
for(;j<len;j++){    
LatLng location = new LatLng(Double.valueOf(lat.get(j)).doubleValue(), 
    Double.valueOf(longi.get(j)).doubleValue()) ; 
     new ReverseGeocodingTask(getBaseContext()).execute(location); 
     googlemap.addMarker(new MarkerOptions() 
     .title(plat.get(j).toString()) 
     .snippet(snippet) 
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_CYAN)) 
     .position(location) 
     ); 
    } 
} 

这里下面是我的AsyncTask代码,其中我返回的值。请一定看看,并给我解释一下我的愚蠢的错误....

private class ReverseGeocodingTask extends AsyncTask<LatLng, Void, String> 
{ 
    Context mContext; 

    public ReverseGeocodingTask(Context context){ 
     super(); 
     mContext = context; 
    } 

    // Finding address using reverse geocoding 
    @Override 
    protected String doInBackground(LatLng... params) { 
     Geocoder geocoder = new Geocoder(mContext); 
     double latitude = params[0].latitude; 
     double longitude = params[0].longitude; 

     List<Address> addresses = null; 

     try { 
      addresses = geocoder.getFromLocation(latitude, longitude,1); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

     if(addresses != null && addresses.size() > 0){ 
      Address address = addresses.get(0); 

      addressText = String.format("%s, %s, %s", 
      address.getMaxAddressLineIndex() > 0 ? address.getAddressLine(0) : "", 
      address.getLocality(), 
      address.getCountryName()); 
     } 

     return addressText; 
    } 
    @Override 
    protected void onPostExecute(String addressResult) { 
     // Setting the title for the marker. 
     // This will be displayed on taping the marker 

     snippet = addressResult; 
     super.onPostExecute(snippet); 
     //Toast.makeText(Show_full_map.this,addressText,Toast.LENGTH_LONG).show(); 
    } 
} 
+0

请告诉我你的问题? –

+0

我的问题是我无法找到一种方法来显示片段中的值。我添加了asyntask代码,并在onpostexecute我也有一个名为snippet的变量。所以我想在我的oncreat活动中传递这个变量。浩我可以做到这一点 – user2956373

+0

你需要了解AsyncTask中的'Async'的概念 – njzk2

我猜你想snippet调用execute之后。这不是AsyncTask的工作原理。您可以在AsyncTask的构造函数中传递location并从onPostExecute()访问它。 刚刚从你的移动下面的代码回路onPostExecute()

@Override 
    protected void onPostExecute(String snippet) { 
     super.onPostExecute(snippet); 
     googlemap.addMarker(new MarkerOptions() 
     .title(plat.get(j).toString()) 
     .snippet(snippet) 
     .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_CYAN)) 
     .position(location) 
     ); 
} 
+0

不,这是行不通的。这样我的应用程序崩溃了。 – user2956373

+0

你可以分享你的logcat吗? –

+0

是的,我刚刚添加了它 – user2956373