Как создавать элементы Fragment, когда приложение запускается без их воссоздания - PullRequest
0 голосов
/ 09 октября 2018

Я использую четыре фрагмента в mainacctivity, и у каждого есть свой класс с классом mainactivity.

У меня есть элементы в классе Frag1, когда я создаю их внутри метода onCreateView, они создаются каждый раз, когда я открываю фрагмент.

Я пытался создать элементы в методе onStart в классе фрагмента, ничего не изменилось.Я пытался создать элементы в методе onCreate в классе фрагмента, он останавливает приложение.

Когда я создаю элементы в методе onCreate, onStart в MainActivity, приложение останавливается.

Итак, в основном я хочу создать элемент только один раз, и при запуске приложения он должен быть создан.

Как я могу решить эту проблему?Спасибо за помощь.

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

Я рекомендую вам сохранять состояние вашего приложения с помощью onSavedInstanceState () при изменениях конфигурации, поскольку при запуске приложения onCreate () вызывается один раз, пока не произойдет изменение конфигурации: и жизненный цикл каждого фрагмента зависит от действия, которое их запускает,следовательно, вам нужно проверить обнуляемость saveInstanceState в соответствующих действиях и фрагментах таким образом, чтобы логика внутри onCreate () для действия и onCreateView () для фрагмента была определена для обоих случаев, когда saveInstanceState равно нулю и не равно нулю.Таким образом, если ваше приложение должно запускать onCreate () и onCreateView () после однократного использования, обнуляемость сохраненного состояния будет определять логику для запуска

0 голосов
/ 09 октября 2018

Самым простым способом было бы добавить простую проверку того, являются ли они нулевыми или нет перед их созданием:

private String test;

if (test == null) 
    test = new String();

Для этого метода вы должны убедиться, что переменные находятся в области действия всегокласс:

class test {
    private String test;

    public void update() {
        if(test == null) test = new String();
            textView.setText(test);
    }
}

В противном случае вы можете переписать код для использования статических переменных.

...