Intereting Posts
Как сохранить изображение в общих предпочтениях в Android | Общая проблема с предпочтением в Android с изображением Зачем использовать Сервис, если он работает в том же потоке в android Android.support.v4.app.getFragmentManager () возвращает null? Используя getWindowManager () внутри BroadcastReceiver Как изменить HomeButton Hilight Color при нажатии Как реализовать функциональность камеры с дополнительными параметрами (например, Panorama)? GetApplicationContext (), getBaseContext (), getApplication (), getParent () Как скрыть папку в sdcard в android Nexus 4 Формат предварительного просмотра камеры Соотношение всегда требует 16×9 поверхности? Зачем Эквивалент ImageView scaleType 'centerCrop' для растровой растягивающей силы тяжести Как использовать ColorDrawable с ImageView? Автоматическое определение разрешения камеры (то есть мегапикселей) на Android Null Canvas в SurfaceView Thread, несмотря на остановку Thread in surfaceDestroyed () – только на Android 4 / ICS Android: обратный вызов AsyncTask для фрагмента (без активности) Android Studio APK Analyzer для отладочных сборников

Включить / отключить Android ActionBar.Tab

Я разрабатываю приложение, использующее новую систему вкладок (ActionBar.addTab ()), у меня будет 3 вкладки. Во время определенного процесса я хотел бы заблокировать (отключить) два из них (не удалять, только не принимать клики и не изменять «селектор».

Я смог не изменять содержимое (путем реализации TabListener, а не для изменения фрагмента и т. Д.), Но селектор изменяется.

Нужно ли вообще отключать / активировать вкладки? Без необходимости удалять и добавлять снова?

Заранее спасибо! BR, Данило

Solutions Collecting From Web of "Включить / отключить Android ActionBar.Tab"

К сожалению, в панели действий нет «включить» или «отключить» вкладки. Как вы заметили, вы можете удалить и повторно добавить их – это самый близкий вы можете получить AFAIK.

Я попал в ту же самую проблему. Наконец удалось решить проблему. Как уже было сказано, нет возможности отключить / включить вкладку. Существует только один выход – и это значит вернуться к предыдущей вкладке, используя

 getActionBar().setSelectedNavigationItem(tab); 

Обратите внимание, однако, что это НЕ должно быть сделано изнутри

 onTabSelected(ActionBar.Tab tab,FragmentTransaction fragmentTransaction) 

Метод, потому что тогда он застревает в рекурсивном цикле. Таким образом, внутри onTabSelected () – отправьте messsage в обработчик действий для выполнения setSelectedNavigation ().

Один улов здесь (вы будете знать, когда вы его реализуете): какое значение «табуляции» нужно передать в setSelectedNavigation. Для этого мы должны отслеживать, является ли это нажатием кнопки вкладки пользователя или принудительным переключением на последнюю вкладку с помощью кода.

Для этого:

 public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) { if (forcedTabSwitch) forcedTabSwitch = false; else mTabToBeSwitchedTo = tab.getPosition(); } 

И в обработчике,

 switch (msg.what) { case SWITCH_TO_TAB : forcedTabSwitch = true; break; } 

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

Я использовал класс DataSetter для хранения ранее выбранной позиции табуляции и логического значения для определения выбора вкладки. Если логический флаг имеет значение true, пользователь нажимает следующую / предыдущую кнопку. В противном случае пользователь пытается выбрать вкладку, нажав на них, которые мы не разрешаем.
Я использовал обработчик для выбора вкладок. Внутри фрагмента, когда пользователь нажимает следующую кнопку, я транслирую этот запрос. Запрос широковещания имеет целочисленный параметр, который является позицией следующей или предыдущей вкладки, которую мы хотим установить. Код внутри фрагмента:

  @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.first_tab_fragment, container, false); next = (Button)rootView.findViewById(R.id.nextbutton); next.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent intent = new Intent("TAB_CLICKED"); Bundle bundle = new Bundle(); bundle.putInt(MainActivity.POSITION,1); intent.putExtras(bundle); getActivity().sendBroadcast(intent); } }); return rootView; } 

Я использовал CustomViewPager вместо ViewPager для предотвращения прокрутки вкладок. Класс CustomViewPager:

  public class CustomViewPager extends ViewPager { private boolean enabled; public CustomViewPager(Context context) { super(context); } public CustomViewPager(Context context, AttributeSet attrs) { super(context, attrs); } @Override public boolean onTouchEvent(MotionEvent event) { // TODO Auto-generated method stub if (this.enabled) { return super.onTouchEvent(event); } return false; } @Override public boolean onInterceptTouchEvent(MotionEvent event) { // TODO Auto-generated method stub if (this.enabled) { return super.onInterceptTouchEvent(event); } return false; } public void setPagingEnabled(boolean enabled) { this.enabled = enabled; } } 

Внутри метода oncreate MainActivity.java добавьте две строки:

  viewPager = (CustomViewPager) findViewById(R.id.pager); viewPager.setPagingEnabled(false); 

Ниже приведен код из MainActivity.java:

  @Override public void onTabSelected(Tab tab, FragmentTransaction ft) { Log.d("MainActivity","onTabSelected"); if(setter.getFlag() == true) { viewPager.setCurrentItem(setter.getposition()); } } @Override public void onTabUnselected(Tab tab, FragmentTransaction ft) { // TODO Auto-generated method stub Log.d("MainActivity","onTabUnselected"); //handler.sendEmptyMessage(0); Message message = new Message(); message.arg1 = setter.getposition(); handler.sendMessage(message); } Handler handler = new Handler() { public void handleMessage(android.os.Message msg) { int arg1 = msg.arg1; Log.d("arg1",arg1+""); //viewPager.setCurrentItem(arg1); mActionBar.setSelectedNavigationItem(arg1); Log.d("handler","Inside handler"); } }; BroadcastReceiver receiver = new BroadcastReceiver(){ public void onReceive(Context context, android.content.Intent intent) { String action = intent.getAction(); Bundle bundle = intent.getExtras(); int position = bundle.getInt(MainActivity.POSITION); Log.d("Action",action); Log.d("position",position+""); setter.setposition(position); setter.setflag(true); Message message = new Message(); message.arg1 = position; handler.sendMessage(message); }; }; } 

Наконец DataSetter.java:

  public class DataSetter { int position; boolean flag; void setposition(int value) { position = value; } void setflag(boolean value) { flag = value; } int getposition() { return position; } boolean getFlag() { return flag; } } 

Больше вы можете найти на: http://suhas1989.wordpress.com/2014/10/13/enable-or-disable-actionbar-tab-in-android/