2014-10-30 73 views
0

我的應用程序使用Google地圖API顯示帶有一些標記的地圖。如果我選擇一個標記,應用程序爲我提供了根據標記標題打開瀏覽器到特定URL的可能性。回到應用程序時,我認爲它進入了onCreate函數;因此我正在失去狀態(例如相機位置),應用程序在瀏覽之前。有沒有辦法避免這種或某種備份還原機制?Android - 丟失谷歌地圖和網絡瀏覽器之間的數據切換

這裏是我的表現,如要求通過@DavidWasser

<uses-sdk 
    android:minSdkVersion="9" 
    android:targetSdkVersion="21" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
<uses-permission android:name="android.permission.INTERNET"/> 
<!-- External storage for caching. --> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
<!-- My Location --> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 
<!-- Maps API needs OpenGL ES 2.0. --> 
<uses-feature 
    android:glEsVersion="0x00020000" 
    android:required="true"/> 

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:hardwareAccelerated="true"> 

    <meta-data android:name="com.google.android.maps.v2.API_KEY" 
     android:value="xxxxx"/> 
    <meta-data 
     android:name="com.google.android.gms.version" 
     android:value="@integer/google_play_services_version" /> 
    <activity 
     android:name=".MainActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 
</manifest> 
+0

當返回到應用程序不應該叫'的onCreate( )'再次對你的活動。你一定在做一些奇怪的事情。請張貼您的清單並指出哪些活動是失去狀態的活動。 – 2014-10-30 18:03:31

回答

0

我只是看着你的代碼,並意識到這不是我換貨,看看一個代碼如下: 這是如何保存的狀態:

@Override 
public void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 
    mapView.onSaveInstanceState(outState); 
} 

以及如何恢復它:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.fragment_map_search, container, false); 
    mapView.onCreate(savedInstanceState); 
} 
0

由內activity'sfragment's onSaveInstanceState(Bundle)方法調用它利用MapViews onSaveInstanceState(Bundle)方法。用它來恢復片段的onCreateView()中的MapViews狀態。 這應該保存攝像機位置,變焦信息等

記住要遵循documentation(類概述部分)約鉤住你的MapViews方法

+0

好的。我要測試它,我會告訴你結果。 – 2014-10-31 13:44:32

+0

好,工作正常。謝謝。 – 2014-10-31 16:59:31

+0

我很高興聽到它的幫助。 如果我的回答對您有幫助,請將其標記爲解決方案。 – MatBos 2014-11-01 14:10:50

0

此之後,我(感謝@MatRos)正常工作的代碼:

@Override 
public void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 

    if (mMap != null) { 
     outState.putParcelable("camera", mMap.getCameraPosition()); 
    } 
} 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
... 
    if(savedInstanceState != null){ 
     CameraPosition savedCameraPosition = savedInstanceState.getParcelable("camera"); 
     if(savedCameraPosition != null){ 
      mMap.animateCamera(CameraUpdateFactory.newCameraPosition(savedCameraPosition)); 
     } 
相關問題