2012-12-17 9 views
0

我不知道我在做什麼錯。 嗯,我想發送用戶谷歌地圖,並從片段中選擇一個位置。但保存位置後,用戶回到片段,但保存的數據丟失。Android:發回意圖丟失數據片段

所述片段具有這樣的代碼:

mapButton.setOnClickListener(new View.OnClickListener() { 
    @Override 
     public void onClick(View v) { 
      Intent intent = new Intent(getActivity(), SlamMap.class); 
      startActivityForResult(intent, 9998); 
      getActivity().overridePendingTransition(R.anim.slide_in_left, 
        R.anim.slide_out_left); 
     } 
    }); 

和片段接收結果意圖這樣

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    switch (requestCode) { 
    case (9998): { 
     if (resultCode == Activity.RESULT_OK) { 
      Log.i("RUN", data.toString()); 
      String lon = data.getStringExtra("LON"); 
      String lat = data.getStringExtra("LAT"); 
      setLocation(lon, lat); 
     } 
     break; 
    } 
    } 
} 

井確定,在MapActivity代碼處理這樣的數據:

@Override 
public boolean onMenuItemSelected(int featureId, MenuItem item) { 
    switch (item.getItemId()) { 
    case R.id.addLoc: 
     Intent resultIntent = new Intent(); 
     if (itemizedOverlay.getLat() != 0 && itemizedOverlay.getLon() != 0) { 
      Log.i("RUN", "" + (long) (itemizedOverlay.getLon())); 
      resultIntent.putExtra("LON", 
        String.valueOf((long) itemizedOverlay.getLon())); 
      resultIntent.putExtra("LAT", 
        String.valueOf((long) itemizedOverlay.getLat())); 
      setResult(Activity.RESULT_OK, resultIntent); 
      finish(); 
      overridePendingTransition(R.anim.slide_out_right, 
        R.anim.slide_in_right); 
     } 
     return true; 
    default: 
     return super.onMenuItemSelected(featureId, item); 
    } 
} 

但正如我所說的onActivityResult由setResult調用,但我內容沒有關於我的兩個字符串LON和LAT的信息。

這裏有什麼問題?

回答

0

替換:

String lon = data.getStringExtra("LON"); 
String lat = data.getStringExtra("LAT"); 

通過

String lon = data.getExtras().getString("LON"); 
String lat = data.getExtras().getString("LAT"); 

問候

+0

都能跟得上,這不是它。我調試了Intent,並且沒有額外的內容。因此,無論如何,意圖在將信息發送回片段時都會丟失信息。 – mapodev

+0

您是否檢查onMenuItemSelected方法上是否設置了LAT和LON? – vsm

+0

是的,它們是Log.i(「RUN」,「」+(long)(itemizedOverlay.getLon()));'告訴我一個數字 – mapodev