Как загрузить фрагмент, если он не равен нулю - Android?

Мне нужна помощь, так как я немного новичок в Android, в моем приложении для Android, над которым я работаю, я все время перемещаюсь между фрагментами. Я использую код для перехода между фрагментами.

 private void displaySelectedScreen(int id){
        Fragment fragment=null;
        String fragment_tag = "";
        switch(id)
        {
            case R.id.nav_listen:
                fragment=new ListenFragment();
                fragment_tag = "LISTENTAG";
                break;
            case R.id.nav_programs:
                break;
            case R.id.nav_stories:
                break;
            case R.id.nav_about:
                break;
            case R.id.nav_feedback:
                break;
            case R.id.nav_share:
                shareTextUrl();
                break;
        }
        if (fragment!=null){
            FragmentTransaction ft=getSupportFragmentManager().beginTransaction();
            ft.replace(R.id.content_frame,fragment,fragment_tag);
            ft.commit();
        }
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        drawer.closeDrawer(GravityCompat.START);
    }

Мне просто нужно проверить, что если фрагмент существует (загружен) раньше, контейнер должен отображать ранее загруженный фрагмент. Однако, если Фрагмент не был загружен до того, как Фрагмент должен быть загружен в первый раз.

Может ли кто-нибудь помочь мне в этом?

Спасибо большое. Код внутри моего фрагмента: (ListenFragment.java)

public class ListenFragment extends Fragment
{

    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState)
    {
        super.onViewCreated(view, savedInstanceState);
        getActivity().setTitle("Listen Live");
    }

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        final View InputFragmentView=inflater.inflate(R.layout.listen_layout,container,false);

        return InputFragmentView;
    }

В ListenFragment условие проверки может быть, если view != null, то ... Это то, о чем вы спрашиваете?

ʍѳђઽ૯ท 28.08.2018 16:21

Было бы здорово, если бы вы могли показать мне образец, пожалуйста, так как я немного новичок в Android.

Iqraa 28.08.2018 16:23

Я просто хочу, чтобы ListenFragment не создавался каждый раз, когда я возвращаюсь к этому фрагменту.

Iqraa 28.08.2018 16:25
1
3
415
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вам не нужно объявлять переменные, ссылающиеся на экземпляр фрагмента. Вместо этого сохраните фрагмент по тегу и получите его. Как это:

Fragment fragment = getSupportFragmentManager().findFragmentByTag("fragment_tag");
if (fragment == null) {
   fragment=new ListenFragment();
}
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.content_frame, fragment, fragment_tag);
ft.commit();

Я постараюсь сообщить вам.

Iqraa 28.08.2018 16:30

Спасибо большое, это сработало !. Вы сэкономите мне много времени.

Iqraa 28.08.2018 16:54

используйте следующие методы, чтобы получить фрагмент:

getFragmentManager().findFragmentById(R.is.xyz)

getFragmentManager().findFragmentByTAG("XYZ")

затем используйте для запуска фрагмента:

supportFragmentManager.beginTransaction()

здесь есть аналогичный вопрос, это может помочь: Проверьте, существует ли фрагмент, и используйте его повторно.

Другие вопросы по теме