1

Поэтому я использую прокручиваемые вкладки + прокручивать навигацию для воспроизведения разных музыкальных файлов на разных экранах вкладок.Как обновить Фрагмент при прокрутке в [Прокручиваемые вкладки + Прокрутка] Навигация-Android?

Вот мой модифицированный OnCreateView для фрагмента по умолчанию, которые автоматически генерируются

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragment_main_dummy, 
       container, false); 
     TextView dummyTextView = (TextView) rootView 
     .findViewById(R.id.sT); 
     dummyTextView.setText(Integer.toString(getArguments().getInt(
     ARG_SECTION_NUMBER))); 
     AssetFileDescriptor fda; 
     MediaPlayer amp = new MediaPlayer(); 

     try {  
      fda = rootView.getContext().getAssets().openFd("songname.mp3"); 
      amp.reset(); 
      amp.setDataSource(fda.getFileDescriptor()); 
      amp.prepare(); 
      amp.start(); 

     } catch (IllegalArgumentException e) { 
      e.printStackTrace(); 
     } catch (IllegalStateException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     }  
     return rootView;  

} Здесь у меня просто TextView, который показывает порядковый номер экрана. Скажем, первый экран показывает «1», второй показывает «2» в textView ... и так далее.

Я хочу изображение для каждого экрана, но я могу это сделать.

Проблема с воспроизведением звука.

Сейчас он просто играет песню, когда начинается экран. Скажите, что играет песня.

Если пользователь переместится влево или вправо, как изменить воспроизведение песни? Мне нужно остановить это, изменить «setDataSource» в соответствии с номером индекса (ARG_SECTION_NUMBER) ... и воспроизвести его снова.

Но как узнать, прошел ли пользователь и изменил открытую вкладку? (с помощью прокручиваемой вкладки или прокрутки)

В каком пользовательском мероприятии я вношу эти изменения? Могу ли я установить то, что по умолчанию останавливает воспроизводимую песню и переключается на следующую, когда экран меняется ...?

В конце концов, я намерен добавить кнопку воспроизведения/паузы. Даже с этим я бы хотел сменить ресурсы с помощью экранов. Именно этот вопрос

Thnx!

ответ

2

ViewPager имеет метод setOnPageChangeListener(), который позволит вам установить объект, который получает обратный вызов, когда новая страница становится той, которую ищет пользователь.

что-то вроде этого получит вы на правильном пути:

mPageChangeListener = new OnPageChangeListener() { 

    @Override 
    public void onPageScrollStateChanged(int arg0) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void onPageScrolled(int arg0, float arg1, int arg2) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void onPageSelected(int pos) { 
     playSoundForPage(pos); 
    } 

}; 
yourViewPager.setOnPageChangeListener(mPageChangeListener); 

однако вы должны сделать это в любом имеет свой ViewPager (активность, или фрагмент), а не ваш адаптер.

Или вы можете использовать это:

@Override 
public void setUserVisibleHint(boolean isVisibleToUser) { 
super.setUserVisibleHint(isVisibleToUser); 
if (isVisibleToUser) { } 
else { } 
} 
+0

Я добавил еще один легкий вариант для вашего случая в конце моего ответа. Проверьте изменения. – Sushil

+1

Это работает, ** setUserVisibleHint() **. Спасибо –

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