2017-01-16 214 views
-4

我從Google Places檢索我的JSON響應,我想在ListView中的另一個活動中顯示它。我試圖做的是將對象從一個活動傳遞到另一個活動,但似乎並不奏效。將JSON對象從一個活動傳遞到另一個Android

這就是我想從通過JSON我的活動的一部分:

public class GetNearbyPlacesList extends AsyncTask<Object, String, String> { 

    String googlePlacesData; 
    String url; 
    List<HashMap<String, String>> nearbyPlacesList = null; 
    private Intent context; 
    private SharedPreferences.Editor intent; 

    @Override 
    protected String doInBackground(Object... params) { 
     try { 
      Log.d("GetNearbyPlacesData", "doInBackground entered"); 
      url = (String) params[0]; 
      DownloadUrl downloadUrl = new DownloadUrl(); 
      googlePlacesData = downloadUrl.readUrl(url); 
      Log.d("GooglePlaceData", googlePlacesData); 
      Log.d("GooglePlacesReadTask", "doInBackground Exit"); 
     } catch (Exception e) { 
      Log.d("GooglePlacesReadTask", e.toString()); 
     } 
     return googlePlacesData; 
    } 

protected void onPostExecute(String result) { 
       Log.d("GooglePlacesReadTask", "onPostExecute Entered"); 
       ListParser listParser = new ListParser(); 
       nearbyPlacesList = listParser.parse(result); 
       Log.d("List of restaurants", nearbyPlacesList.toString()); 
       Log.d("GooglePlacesReadTask", "onPostExecute Exit"); 
     Intent intent = new Intent(GetNearbyPlacesList.this,ListRestActivity.class); 
     intent.putExtra("deal", nearbyPlacesList.toString()); 
     startActivity(intent); 
    } 

這是我想通過JSON的類:

public class ListRestActivity extends Activity implements 
      GoogleApiClient.ConnectionCallbacks, 
    GoogleApiClient.OnConnectionFailedListener, 
    LocationListener { 


ListView lv; 
double latitude; 
double longitude; 
private int PROXIMITY_RADIUS = 10000; 
GoogleApiClient mGoogleApiClient; 
Location mLastLocation; 
Marker mCurrLocationMarker; 
LocationRequest mLocationRequest; 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_listrest); 
    if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
     checkLocationPermission(); 
    } 

    //Check if Google Play Services Available or not 
    if (!CheckGooglePlayServices()) { 
     Log.d("onCreate", "Finishing test case since Google Play Services are not available"); 
     finish(); 
    } 
    else { 
     Log.d("onCreate","Google Play Services available."); 
    } 

    String Restaurant = "restaurant"; 

    String url = getUrl(latitude, longitude, Restaurant); 
    Object[] DataTransfer = new Object[1]; 
    DataTransfer[0] = url; 
    GetNearbyPlacesList getNearbyPlacesList = new GetNearbyPlacesList(); 
    getNearbyPlacesList.execute(DataTransfer); 
} 

回答

0

在第二個活動中,您可以訪問意圖的JSON字符串,其中包含

getIntent().getStringExtra("deal"); 

然後,如果需要,您可以將其轉換回JSON對象。

更新:

爲什麼你會在收到您的異步任務的意向構造一個錯誤的原因是因爲你沒有在一個有效的上下文作爲參數傳遞。您的上下文屬性的類型爲意向時,它應該是上下文,以便解決這個問題是這樣的:

private Context mContext; 

添加一個構造函數,以您的GetNearbyPlacesList像這樣

public GetNearbyPlacesList(Context context) { 
    mContext = context 
} 

通過它實例化一個背景下,您的第一項活動最有可能的。

所以那麼當你構建你的異步任務類的意圖,你可以這樣做是這樣的:

Intent intent = new Intent(mContext, ListRestActivity.class) 
+0

我在onPostExecute一個警告,說:無法解析構造意圖 – didi

+0

確保您的變量上下文你'傳入Intent構造函數實際上是一個上下文。我沒有看到你的第一個活動的聲明,但如果你在內部類中聲明瞭這個意圖,你很可能需要將'context'改爲'FirstActivity.this'。 –

+0

在我的答案代碼片段中也發現了一個錯字。相應更新。 –

相關問題