Второй экземпляр фрагмента ведет себя странно

#android #android-fragments

#Android #android-фрагменты

Вопрос:

Внутри моего проекта у меня есть фрагмент, который запускает фрагмент. Когда я впервые запускаю свое приложение и захожу в приложение, все работает очень хорошо. но когда я нажимаю клавишу возврата и возвращаюсь к первому фрагменту, а затем нажимаю и перехожу ко второму фрагменту.. Ну, все становится пустым!

Вот как я запускаю второй фрагмент из первого:

 ft.addToBackStack(null);
ft.replace(R.id.content_frame, UDP);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.commit();
 

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

Вот код для второго фрагмента:

 public UniversityImage newInstance() {
        UniversityImage Instance = new UniversityImage();
        return Instance;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View viewta = inflater.inflate(R.layout.universityimage, container,
                false);
        prefs = this.getSherlockActivity().getSharedPreferences(prefName,
                Context.MODE_PRIVATE);
        setRetainInstance(false);
        uniiv = (ImageView) viewta.findViewById(R.id.ivUNI);
        Log.e("Uni", prefs.getString("UniversityName", "LAU"));
        ILoader.DisplayImage(c.getString(c
                .getColumnIndex(UniversitiesDatabase.KEY_IMAGEURL)),uniiv);
 return viewta;
    }
}
 

Даже когда я впервые запускаю свой фрагмент, он регистрирует все, во второй раз он ничего не регистрирует! что я делаю не так? Спасибо, ребята

Комментарии:

1. Заставьте ваше действие запустить второй фрагмент вместо того, чтобы совершать FragmentTransaction внутри первого фрагмента.

2. @ILovemyPoncho Как я могу это сделать? можете ли вы предоставить его в качестве ответа? Спасибо!

3. Создайте метод в своей деятельности, который зафиксирует транзакцию фрагмента и вызовет ее из первого фрагмента. Здесь объясняется …> developer.android.com/training/basics/fragments /…

Ответ №1:

поместите этот код

  prefs = this.getSherlockActivity().getSharedPreferences(prefName,
                Context.MODE_PRIVATE);
        setRetainInstance(false);
        uniiv = (ImageView) viewta.findViewById(R.id.ivUNI);
        Log.e("Uni", prefs.getString("UniversityName", "LAU"));
        ILoader.DisplayImage(c.getString(c
                .getColumnIndex(UniversitiesDatabase.KEY_IMAGEURL)),uniiv);
 

в

 onActivityCreated(Bundle savedInstanceState){

  super.onActivityCreated(savedInstanceState);
   prefs = this.getSherlockActivity().getSharedPreferences(prefName,
                Context.MODE_PRIVATE);

        uniiv = (ImageView) getView().findViewById(R.id.ivUNI);
        Log.e("Uni", prefs.getString("UniversityName", "LAU"));
        ILoader.DisplayImage(c.getString(c
                .getColumnIndex(UniversitiesDatabase.KEY_IMAGEURL)),uniiv);

}
 

Комментарии:

1. Я все еще получаю тот же результат: (, в ImageView ничего не отображается:/ @Lena Bru