2016-02-10 2 views
1

Я разрабатываю приложение для Android. Я использую TabLayout для вкладок. Но я не использую представление пейджера для фрагмента на выбранной вкладке. Вместо этого я заменяю фрагмент на прослушиватель событий на представление. Я хочу отменить выбор всех вкладок, когда выбран пункт в меню опций. Но я видел одинаковый вопрос в stackoverflow. Ответ не может этого сделать. Потому что нужно выбрать вкладку. См. Мой сценарий ниже.Как отменить выбор всех вкладок TabLayout в Android из-за меню опций?

Это дизайн пользовательского интерфейса моего приложения

enter image description here

Как вы можете видеть выше конструкции, вкладка PODCASTS выбирается по умолчанию. Здесь начинается проблема.

Вот скриншот моего меню опции и функции

enter image description here

enter image description here

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

Это, как я добавляю вкладки к вкладке макета в MainActivity

private void setupTabs() { 
     tabLayout.addTab(tabLayout.newTab().setText("Podcasts")); 
     tabLayout.addTab(tabLayout.newTab().setText("Playlist")); 
     tabLayout.addTab(tabLayout.newTab().setText("Downloads")); 
     tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
      @Override 
      public void onTabSelected(TabLayout.Tab tab) { 
       switch (tab.getPosition()){ 
        case 1: 
         setPlaylistFragment(); 
         commitFragment(); 
         break; 
        case 2: 
         setDownloadsFragment(); 
         commitFragment(); 
         break; 
        default: 
         setPodcastListFragment(0, getResources().getString(R.string.app_name), "ALL_FRAGMENT"); 
         commitFragment(); 
         break; 
       } 
      } 

      @Override 
      public void onTabUnselected(TabLayout.Tab tab) { 

      } 

      @Override 
      public void onTabReselected(TabLayout.Tab tab) { 

      } 
     }); 
    } 

Так, пожалуйста, помогите мне решить мою проблему. Благодарю.

+0

из любопытства, почему не '' ViewPager' с tabLayout.setupWithViewPager (ViewPager); ' –

+0

Поскольку у меня есть навигационный ящик –

+0

так, что панель навигации имеет дело с ViewPager и TabLayout они независимы. Поведение убийства О.o – sector11

ответ

1

У меня есть ответ. Мне просто нужно переопределить onTabReselected. Так что мой слушатель будет таким.

tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
      @Override 
      public void onTabSelected(TabLayout.Tab tab) { 
       switch (tab.getPosition()){ 
        case 1: 
         setPlaylistFragment(); 
         commitFragment(); 
         break; 
        case 2: 
         setDownloadsFragment(); 
         commitFragment(); 
         break; 
        default: 
         setPodcastListFragment(0, getResources().getString(R.string.app_name), "ALL_FRAGMENT"); 
         commitFragment(); 
         break; 
       } 
      } 

      @Override 
      public void onTabUnselected(TabLayout.Tab tab) { 

      } 

      @Override 
      public void onTabReselected(TabLayout.Tab tab) { 
       switch (tab.getPosition()){ 
        case 1: 
         setPlaylistFragment(); 
         commitFragment(); 
         break; 
        case 2: 
         setDownloadsFragment(); 
         commitFragment(); 
         break; 
        default: 
         setPodcastListFragment(0, getResources().getString(R.string.app_name), "ALL_FRAGMENT"); 
         commitFragment(); 
         break; 
       } 
      } 
     }); 
0

Вы можете изменить цвет фона выбранной вкладки при установке нажат tabHost.getTabWidget().getChildAt(i) .setBackgroundColor(Color.parseColor("#393939")); и установить выбранную вкладку в другую вкладку т.е. setSelected(1)

Ваш поток будет как that.If вы находитесь на вкладке-1 и вы нажимаете кнопку настройки, а затем нажатие кнопки позволяет изменить выбранную вкладку и фон выбранной вкладки. Теперь, когда пользователь выбирает первую вкладку, он может видеть содержимое вкладки

Пс: из-за меньшей репутации я не комментировал это ваш вопрос

0

Я рекомендую вам использовать логическое значение для хранения состояний, например, если я не хочу, чтобы представление A отображалось, я сделаю это условным, создав логическое выражение boolean showA и установив его на false, на странице, Я установил его в true, щелкнув опцию Item, которую вы сказали, я снова установил значение boolean в false, что означает, что A не будет отображаться, поскольку это зависит от логического. Это должно сделать это. Надеюсь, эта помощь.

+0

Например, A для элементов ящика и B для опционных элементов? Тогда у меня будет два основных вида контента и условно переключение? –

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

  • Нет связанных вопросов^_^