2016-02-23 2 views
0

Я реализовал Pager Sliding Strip и работает отлично.PagerSlidingStrip также загружает другой фрагмент.

У меня есть 5 вкладок, каждый из которых содержит разные фрагменты. Когда я нажимаю на вторую вкладку для загрузки соответствующего фрагмента, он также загружает детали 3-го фрагмента, показывая тост, который я закодировал в фрагменте третьей вкладки.

Это полностью разрушило производительность приложений. Почему я решаю эту проблему, я не знаю, что происходит на самом деле.

Я работаю над действительно большим проектом, я не могу опубликовать весь код.

Пожалуйста, помогите мне с этим, я отправлю соответствующий код по запросу.

С уважением.

EDIT

Уведомление Фрагмент, который загружается другой фрагмент

ListView notification_listview; 
ArrayList<FragmentNotificationDTO> arraylist; 
NotificationAdapter adapter; 
private static View notificationView; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    if (notificationView != null) { 
     ViewGroup parent = (ViewGroup) notificationView.getParent(); 
     if (parent != null) 
      parent.removeView(notificationView); 
    } 
    notificationView = inflater.inflate(R.layout.fragment_notification, 
      container, false); 
    initLayout(notificationView); 
    loadData(); 
    return notificationView; 
} 

private void initLayout(View view) { 
    notification_listview = (ListView) view.findViewById(R.id.notification_listview); 
    arraylist = new ArrayList<FragmentNotificationDTO>(); 
    adapter = new NotificationAdapter(mContext, arraylist); 
    notification_listview.setAdapter(adapter); 

} 

Это Food Фрагмент, который загружается также, когда мы нажмем на вкладке Notification

private static View foodlistView; 
RelativeLayout rl_foodshare, rl_foodrequested, rl_foodkitchen; 
TextView tv_foodshare, tv_foodrequested, tv_foodkitchen; 
ImageView img_foodshare, img_foodrequested, img_foodkitchen; 
Fragment fr; 
FragmentManager fm; 
FragmentTransaction fragmentTransaction; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    if (foodlistView != null) { 
     ViewGroup parent = (ViewGroup) foodlistView.getParent(); 
     if (parent != null) 
      parent.removeView(foodlistView); 
    } 
    foodlistView = inflater.inflate(R.layout.fragment_location_list, 
      container, false); 
    initLayout(foodlistView); 
    ChangeFragment(1); 
    return foodlistView; 
} 

MainActivity.java, который содержит PagerSlidingStrip & View Pager

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager); 
    viewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager())); 

    PagerSlidingTabStrip PGSTRIP = (PagerSlidingTabStrip) findViewById(R.id.tabs); 
    PGSTRIP.setViewPager(viewPager); 
    viewPager.setOffscreenPageLimit(0); 
} 
+0

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

+0

@ParsaniaHardik Let Me Check –

+0

@ParsaniaHardik проверяет все его фрагменты полностью. в случае, если я пропустил что-то, я разместил код выше, пожалуйста, проверьте и объясните, есть ли у меня какие-либо вопросы. –

ответ

0

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

@Override 
public void setUserVisibleHint(boolean isVisibleToUser) { 
    super.setUserVisibleHint(isVisibleToUser); 
    if (isVisibleToUser) { 
     // load data here 
    }else{ 
     // fragment is no longer visible 
    } 
} 
Смежные вопросы