在 Android Studio 中使用 MediaPlayer

Using MediaPlayer for Android Studio

我想在进入这个Fragment页面时自动在后台播放音乐。我相信注释掉的部分是您如何实现它的,但我可能输入的第一个参数不正确?

public class AlphabetFragment extends Fragment {

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

    //MediaPlayer mysong;
    //mysong = MediaPlayer.create(AlphabetFragment.this, R.raw.alphabetlist);
    //mysong.start();

    return inflater.inflate(R.layout.fragment_alphabet, container, false);
}

或者我在错误的地方编码,它应该是 MainActivity.java 的一部分吗?

案例R.id.nav_alphabet:

getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new AlphabetFragment()).commit();
                    //mysong = MediaPlayer.create(AlphabetFragment., R.raw.alphabetlistm4a);
                    //mysong.start();

使用getActivity()。它为媒体播放器提供了它需要的上下文。尝试使用此代码:

MediaPlayer mp = MediaPlayer.create( getActivity() , R.raw.alphabetlist );

您的片段代码应如下所示:

MediaPlayer mp; 
public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState) {

    mp=MediaPlayer.create(getActivity(), R.raw.alphabetlist); 
    mp.start():  

    return inflater.inflate(R.layout.fragment_alphabet, container, false);
}

试试这个。希望对您有所帮助!

您可以只使用 getActivityfragment class.

获取 activity 的上下文

如下

public class AlphabetFragment extends Fragment {

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

    MediaPlayer mysong;
    mysong = MediaPlayer.create(this.getActivity(), R.raw.alphabetlist);
    mysong.start();

    return inflater.inflate(R.layout.fragment_alphabet, container, false);
}