2014-10-30 2 views
0

Мое приложение отображает карту с некоторыми маркерами с использованием API карт Google. Если я выберу маркер, приложение предложит мне открыть браузер для определенного URL-адреса на основе названия маркера. Вернувшись в приложение, я думаю, что он входит в функцию onCreate; как следствие, я теряю состояние (например, положение камеры), приложение было перед просмотром. Есть ли способ избежать этого или какого-то механизма резервного копирования и восстановления?Android - Потеря переключения данных между картой google и веб-браузером

Вот мой манифест, как и спросил @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 () 'на вашу деятельность снова. Вы, должно быть, делаете что-то странное. Пожалуйста, опубликуйте свой манифест и укажите, какая деятельность теряет состояние. –

ответ

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

Использование MapViews onSaveInstanceState(Bundle) метод, назвав его изнутри activity's или fragment's onSaveInstanceState(Bundle) метода. Используйте его для восстановления состояния MapViews в onCreateView() фрагмента. Это должно сохранить положение камеры, масштаб информации и т.д.

Не забывайте следовать (раздел обзора класса) documentation о закреплять свои методы MapViews

+0

Хорошо. Я собираюсь проверить это, и я скажу вам результат. –

+0

Хорошо работал нормально. Благодарю. –

+0

Я рад, что это помогло. Если мой ответ помог вам, пожалуйста, отметьте его как решение. – MatBos

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)); 
     } 

 Смежные вопросы

  • Нет связанных вопросов^_^