0

У меня есть приложение с основным меню, которое при нажатии переместится к различным действиям.Восстановить активность с правом фрагментом и состоянием

Одним из этих видов деятельности является поиск с контейнером, который я обновляю многими фрагментами. Это своего рода поиск с тремя шагами. (Шаг 1, Шаг 2, Шаг 3)

Когда я перехожу на другую деятельность и обратно к деятельности поиска, состояние теряется.

Каков наилучший способ восстановить активность с помощью правого фрагмента?

Я попытался андроид: launchMode = «SingleInstance» и также intent.addFlags (Intent.FLAG_ACTIVITY_REORDER_TO_FRONT или Intent.FLAG_ACTIVITY_CLEAR_TOP), чтобы заставить один экземпляр деятельности, а на самом деле работает, но требуется время, чтобы открыть деятельность впервые (приложение рода остановки работ, а затем начать снова)

Я думаю, что я не могу просто использовать savedInstanceState(), потому что каждый фрагмент необходима некоторая информация, выбранный на предыдущем фрагменте

Любое предложение?

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"> 

    <!--Top bar Menu--> 
    <include layout="@layout/partials_top_bar"/> 


    <FrameLayout 
     android:windowSoftInputMode="adjustNothing" 
     android:id="@+id/container" 
     android:layout_weight="1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 
    </FrameLayout> 


    <!--Bottom Bar Menu--> 
    <include layout="@layout/partials_bottom_bar"/> 

</LinearLayout> 

Когда пользователь может выбрать какое-либо действие, их я обновить фактический фрагмент с

 activity.supportFragmentManager 
       .beginTransaction() 
       .replace(R.id.container, fragment) 
       .addToBackStack(null) 
       .commit() 

EDIT: Нашел решение. «Задержка»/«Задержка приложения» показала, когда я открываю SingleInstance, был вызван удалением анимации перехода всех действий. Но эта задержка представляет только активность одного экземпляра. Поэтому я буду использовать это. Большое вам спасибо.

+0

вы можете показать, где вы добавляете fragemnt в вашей деятельности –

+0

я включил некоторый код, это помогает? – cesarsicas

+0

Первый фрагмент добавлен в Framelayout в OnCreate? можете ли вы разместить oncreate код? –

ответ

0

Вы можете создать статическую переменную «состояние» в вашей деятельности, может быть String, и при изменении фрагмента, вы меняете де значение переменной, например, при изменении в StepOneFragment вы поставите значение " step_one ", StepTwoFragment ->" step_two ", StepThreeFragment ->" step_three ", и если вы вернетесь, вы измените значение переменной в зависимости от того, в каком фрагменте вы находитесь, а затем в onCreate of SearchActivity вы делаете переключатель в этой переменной и в зависимости от значения вы загружаете желаемый фрагмент.

Надеется, что это помогает

+0

Im пытается реализовать это, но onCreated(), метод всегда вызывается с savedInstance == null, когда я нажимаю, чтобы снова открыть ту же активность ... За исключением случаев, когда я использую launchMode = "singleInstance", Но onSaveInstanceState() всегда вызывается, когда я изменяю активность – cesarsicas