2016-10-14 4 views
0

У меня есть запрос о блокировке фрагментов. Фактически у меня есть три фрагмента в нижней вкладке навигации. Все три фрагмента - это в основном формы ввода, в которых я выбираю значения из edittexts.However, я хочу добавить функцию в приложение, чтобы при отправке одной формы, т.е. когда один фрагмент передает данные, тогда этот фрагмент должен быть заблокирован от переключения пользователя, а пользователь не может вернуться к этому старому фрагменту, и должно появиться предупреждающее сообщение, отображающее сообщение, которое вы уже отправили в этот раздел, теперь вы не можете вернуться. Кто-нибудь может предложить, как это сделать.Блокировка фрагмента после переключения

например. У меня есть три фрагмента frg1, frg2, frg3, и каждый из них содержит форму для получения данных. Каждая из них имеет кнопку отправки, расположенную ниже, после формы. После того, как вы представите вам следующий фрагмент автоматически (это уже сделано), но вам нужно позаботиться о том, чтобы вы снова не могли вернуться к старому фрагменту. До сих пор я закодировал ту часть, где вы можете переключиться на другой фрагмент после представления, но я все еще могу вернуться. Поэтому в основном мне нужна эта функция, чтобы остановить возвращаясь к старому фрагменту. Пожалуйста, помогите мне решить эту проблему.

ответ

1

, если вы используете ViewPager единственным решением является создание пользовательских ViewPager так:

public class NoScrollViewPager extends ViewPager { 

private boolean isPagingEnabled = false; 

public NoScrollViewPager(Context context) { 
    super(context); 
} 

public NoScrollViewPager(Context context, AttributeSet attrs) { 
    super(context, attrs); 
} 

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    return this.isPagingEnabled && super.onTouchEvent(event); 
} 

@Override 
public boolean onInterceptTouchEvent(MotionEvent event) { 
    return this.isPagingEnabled && super.onInterceptTouchEvent(event); 
} 

public void setPagingEnabled(boolean b) { 
    this.isPagingEnabled = b; 
} 

С setPagingEnabled() вы будете иметь возможность блокировать и разблокировать ViewPager

В противном случае, если вы раздувая использование фрагмента replace() вместо add().

Cheers.

+0

Привет Panabuntu, я не использую viewpager напрямую. В основном я использую навигацию грубой навигации/навигации по дну. Можете предложить какой-то способ включить это изменение в это. – DrManhattan

+0

Вы можете использовать эту функцию и сделать вкладку INVISIBLE или GONE. И пользователь не сможет выбрать эту вкладку. mBottomBar.getTabAtPosition (position) .setVisibility (View.GONE); Кстати, вы должны указать в теме, какую стороннюю библиотеку вы используете :) – Buntupana

Смежные вопросы