Android Java将mp3文件字符串传递到片段中的媒体播放器



我一直在写一个媒体播放器应用程序,当我的媒体播放器代码放在MainActivity.java中时,一切都很好。为了让代码更整洁。我已经将代码移动到一个片段(MediaPlayerFragment(中,并通过在片段中包含一个指向(Uri(mp3文件的定义字符串变量,使代码能够工作。然而,我需要做的是将一个字符串变量从MainActivity.java传递到MediaPlayerFragment.java。我一直在四处寻找这个简单任务的解决方案。我需要将它传递给java,而不是xml。有人能帮忙吗?

尝试过的代码是:

******* MainActivity.java ------------------------------
public String filepath = "/storage/emulated/0/Download/music.mp3";

//  ************ Send File name String to Fragment ****************
MediaPlayerFragment fragment = MediaPlayerFragment.newInstance(this, filepath);
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_media_player, fragment).commit();

MediaPlayerFragment.java -------------------------------
public String filepath;

//  *************** Get File name String from Main ***************
public static com.dave.audioplayer.MediaPlayerFragment newInstance(MainActivity text, String filepath){
com.dave.audioplayer.MediaPlayerFragment fragment = new com.dave.audioplayer.MediaPlayerFragment();
Bundle args = new Bundle();
args.putString(ARG_TEXT, filepath);

fragment.setArguments(args);

return fragment;
}

//********** Initialize media player **********
final MediaPlayer mediaPlayer = MediaPlayer.create(getActivity(), Uri.parse(filepath));

还可以帮助测试代码:

Toast.makeText(this, "Path: " + filepath, Toast.LENGTH_LONG).show();

然而,碎片方面不喜欢这种说法,可能是因为问题,我想如果问题得到解决,它会起作用。

您需要使用getArguments()片段方法,该方法在newInstance((方法中为您提供参数束集,然后使用getCharSequence(ARG_TEXT).toString()

所以你的媒体片段中的代码是:

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
...
Bundle b = getArguments();
filepath = b.getCharSequence(ARG_TEXT).toString();
...
}

最新更新