Android studio 如何在查看寻呼机中停止媒体播放器声音?

Android studio 如何在查看寻呼机中停止媒体播放器声音?,android-studio,android-fragments,android-viewpager,media-player,onpause,Android Studio,Android Fragments,Android Viewpager,Media Player,Onpause,我是Android开发新手,在我的活动中有滑块片段。我试图为不同的滑块播放不同的声音。然而,当我从一页滑到另一页时,声音是重叠的。有人能帮我们吗?这是我的密码: 公共类Diabetes1扩展了片段{ MediaPlayer mp; 视图根视图; @凌驾 创建视图上的公共视图(布局、充气机、视图组容器、, Bundle savedInstanceState){ rootView=充气机。充气(R.layout.slidertopimagecardlayout,container,false); S

我是Android开发新手,在我的活动中有滑块片段。我试图为不同的滑块播放不同的声音。然而,当我从一页滑到另一页时,声音是重叠的。有人能帮我们吗?这是我的密码:

公共类Diabetes1扩展了片段{
MediaPlayer mp;
视图根视图;
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
rootView=充气机。充气(R.layout.slidertopimagecardlayout,container,false);
SharedReferences prefs=this.getActivity().getSharedReferences(“我的语言”,模式为私有);
if(prefs.getString(“myLanguage”和“).equals(“en”)){
mp=MediaPlayer.create(getActivity().getBaseContext(),getResources().getIdentifier(“diab1en”,“raw”,this.getActivity().getPackageName());
mp.start();
}else if(prefs.getString(“myLanguage”和“).equals(“es”)){
mp=MediaPlayer.create(getActivity().getBaseContext(),getResources().getIdentifier(“diab1en”,“raw”,this.getActivity().getPackageName());
mp.start();
}
返回rootView;
}
@凌驾
public void setUserVisibleHint(布尔值isVisibleToUser){
super.setUserVisibleHint(isVisibleToUser);
//确保我们当前可见
if(this.isVisible()){
//如果我们变得不可见,那么。。。
如果(!isVisibleToUser){
mp.stop();
}否则{
//做你喜欢做的事
}
}
}
@凌驾
公共无效暂停(){
super.onPause();
if(mp.isPlaying()){
mp.stop();
}
}
@凌驾
恢复时公开作废(){
super.onResume();
}
}

Viewpager不适合您的用途,因为它会创建屏幕外片段,以便在页面之间快速转换。对于您的问题,每次调用onCreateView,但onPause不调用。要处理此问题,可以将pageChangeListener与pagerAdapter一起使用。每次页面更改后,您可以切换到其他声音并停止当前声音。为此,您必须从页面片段中提取媒体播放器逻辑

试试这段代码,看看它是否有效


我试过这个,但我也犯了同样的错误
public class Diabetes1 extends Fragment {
       MediaPlayer mp;
       View rootView;
       Boolean isPLaying = false;

       @Override
       public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                         Bundle savedInstanceState) {
            rootView = inflater.inflate(R.layout.slidertopimagecardlayout, container, false);
            SharedPreferences prefs = this.getActivity().getSharedPreferences("MY_LANGUAGE", MODE_PRIVATE);
            if (prefs.getString("myLanguage", "").equals("en")) {
                mp = MediaPlayer.create(getActivity().getBaseContext(), getResources().getIdentifier("diab1en", "raw", this.getActivity().getPackageName()));
                mp.start();
                isPLaying = true;
            } else if (prefs.getString("myLanguage", "").equals("es")) {
                mp = MediaPlayer.create(getActivity().getBaseContext(), getResources().getIdentifier("diab1en", "raw", this.getActivity().getPackageName()));
                mp.start();
                isPLaying = true;
            }
            return rootView;
       }

       @Override
       public void setUserVisibleHint(boolean isVisibleToUser) {
            super.setUserVisibleHint(isVisibleToUser);
            // Make sure that we are currently visible
            if (this.isVisible()) {
                // If we are becoming invisible, then...
                if (!isVisibleToUser) {
                    mp.stop();
                } else {
                    // do what you like
                }
            }
       }

       @Override
       public void onPause() {
            super.onPause();
            if(isPlaying) {
                  mp.stop();
                  isPLaying = false;
            }
       }

       @Override
       public void onResume() {
            super.onResume();
       }
}