PagerSlidingTabStrip и onTabUnselect

я использую PagerSlidingTabStrip из

https://github.com/astuetz/PagerSlidingTabStrip/blob/master/library/src/com/astuetz/PagerSlidingTabStrip.java

я реализую приложение, которое, когда пользователь выбирает вкладку, я отправляю на сервер запрос, соответствующий этой вкладке. я хочу отменить эти запросы, когда пользователь выбирает другие вкладки. я имею в виду, например, что пользователь выбирает вкладку 1, и я запрашиваю сервер с именем req1 теперь, когда пользователь выбирает вкладку 2, я хочу отменить req1 и отправить req2 на сервер. во вкладке реализации панели действий есть вызов метода обратного вызова onTabUnselected, и я хочу реализовать это и интегрировать его в эту библиотеку, но я не могу найти, где я должен вызывать этот метод. Может кто-нибудь помочь мне?




Ответы (1)


PagerSlidingTabStrip не имеет ничего общего с Tabs, связанным с ActionBar на самом деле, поэтому onTabUnselected не будет вызываться при отмене выбора вкладок в PagerSlidingTabStrip. Также Tabs, связанный с ActionBar, устарел в Android L.

Я бы рекомендовал вам создать новую переменную, которая отслеживает последнюю выбранную вкладку (при использовании OnClickListener на вкладке (см. строку 251 в классе PagerSlidingTabStrip).

Пример некоторого (не проверенного) кода:

int lastClickedTabPosition;

// This method should be called from the OnClickListener of the tabs.
private void saveClickedPositionAndCancelLastRequest(int clickedPosition) {
    // Cancel your last request here by using the lastClickedTabPosition to get the last clicked position if you have more requests sent to the server.
    // Afterwards set lastClickedTabPosition with the new clicked position:
    this.lastClickedTabPosition = clickedPosition;
}

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

На заметку: Google создал собственную реализацию PagerSlidingTabStrip под названием SlidingTabLayout и выложил ее здесь: https://developer.android.com/samples/SlidingTabsBasic/src/com.example.android.common/view/SlidingTabLayout.html, что может быть проще в использовании и особенно получать помощь в будущем :-)

Надеюсь это поможет.

person Darwind    schedule 25.08.2014
comment
просто +1 за то, что вы потратили время на ответ, проверьте его завтра, чтобы принять, большое спасибо !! - person mmlooloo; 26.08.2014