2014-09-17 4 views
0

У меня есть фрагмент внутри Activity, а затем внутри этого фрагмента у меня также есть веб-просмотр.Prevent Reload Activity/Webview при возврате в приложение и при нажатии кнопки выключения

Задача: После блокировки экрана и разблокировки нажатия кнопки выключения моя активность воссоздана или мой веб-просмотр перезагружен (не уверен, что произойдет).

Та же проблема возникает при переключении приложений на устройство.

Я попытался изменить свои configChanges и мой запускMode. Вот часть моей деятельности в андроида файле манифеста:

 <activity 
     android:name=".MainActivity" 
     android:label="@string/app_name" 
     android:configChanges="keyboard|keyboardHidden|orientation|screenSize" 
     android:windowSoftInputMode="adjustResize" 
     android:launchMode="singleTop" 
     > 
    </activity> 

Также я попытался проверить свою savedInstanceState на myCreate:

@Override 
protected void onCreate(Bundle savedInstanceState) { 

    if (savedInstanceState == null) { 
     this.init(); // Initialize my webview 
    } 
... 

EDIT:

@Override 
protected void onResume() { 
    super.onResume(); 

    //Check if the user is authenticated onResume 
    String message = getIntent().getStringExtra(MainActivity.FragmentIdentifier); 

    if(message == null || message.compareTo(MainActivity.showWebViewFragment) == 0){ 
     changeFragment(new WebViewFragment()); 

    }else if (message.compareTo(MainActivity.showLoginFragment) == 0){ 
     changeFragment(new LoginFragment()); 
    } 
} 

Любые идеи или код образцы будут оценены, спасибо!

+0

вы делаете что-то в деятельности onResume()? – Subham

+0

@ Субэм, да. Я редактировал код – Lara

ответ

0

Я понял, что должен обработать экземпляр и проверить, сохранено ли оно или нет, иначе мой onResume всегда может перезагрузить мой веб-просмотр. Вот мой новый код:

@Override 
protected void onResume() { 
    super.onResume(); 

    //Check if the user is authenticated onResume 
    String message = getIntent().getStringExtra(MainActivity.FragmentIdentifier); 

    if (message == null || message.compareTo(MainActivity.showWebViewFragment) == 0) { 

     /* 
     Check if the instance is saved. If yes, is not necessary to create a new instance of the webview, 
     otherwise will always reload. 
     */ 
     if (!getSavedInstance()){ 
      changeFragment(new WebViewFragment()); 
     } 

    } else if (message.compareTo(MainActivity.showLoginFragment) == 0) { 
     changeFragment(new LoginFragment()); 
    } 

} 

Я объявил глобальную переменную

private Boolean savedInstance = false; 

А вот мой получить и установить

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

public Boolean getSavedInstance() { 
    return savedInstance; 
} 

public void setSavedInstance(Boolean instance_saved) { 
    this.savedInstance = instance_saved; 
} 

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

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