所以,我正在制作一个带有 Scrollable Tabs + Swipe 导航的应用程序。在每个选项卡的页面中,我想播放不同的音频文件。
下面是我的片段的 OnCreateView,包含媒体播放器的初始化、FileDescriptor 以及在 assets 文件夹中播放名为 a.mp3 的音频文件。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main_dummy,
container, false);
///Playing sound from here on
AssetFileDescriptor fda;
MediaPlayer amp = new MediaPlayer();
try {
fda = getAssets().openFd("a.mp3");//// GIVES ERROR !
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;
}
}
GetAssets() 方法给出如下错误:
Cannot make a static reference to the non-static method getAssets() from the type ContextWrapper
尽管从声明 FileDescriptor 到最终 Catch 语句的同一段代码在普通空白活动的 OnCreate 中完美运行。它在这里不起作用。
有什么解决方案吗?
我可以以某种方式使 getAssets() 方法静态吗?
从 Fragment 访问音频文件的任何其他方式?
(请记住,我的目标是在每个不同选项卡的屏幕中播放不同的音频文件。稍后我会添加更多音频文件,只是尝试至少让这个文件首先工作。)
请帮助:)
谢谢 !