我有应用程序将在外部存储上搜索歌曲并通过单击按钮播放它。我使用String path = getFullFilePath(getApplicationContext(), "FILENAME");
,如果我输入类似song.mp3的内容,它可以正常工作...我尝试使用EditText.getText().toString();
除了“FILENAME”,它不起作用。这是我在OnCreate中的代码:
EditText et = (EditText) findViewById(R.id.et1);
String string = et.getText().toString();
sp = new SoundPool(5, AudioManager.STREAM_MUSIC, 0);
String path = getFullFilePath(getApplicationContext(), string);
mSoundId = sp.load(path, 1);
LogCat说`11-07 14:26:39.909:W / SoundPool(12627):样本1不准备
但如果我输入et.setText("SongName");
它工作正常..我想在edittext中输入内容然后将其用作文件名!
谢谢
`
答案 0 :(得分:1)
在OnCreate中执行此操作:
mEditText = (EditText) findViewById(R.id.et1);
mSoundPool = new SoundPool(5, AudioManager.STREAM_MUSIC, 0);
mSoundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() {
public void onLoadComplete (SoundPool soundPool, int sampleId, int status) {
mStreamId = soundPool.play(sampleId, 1, 1, 1, 0, 1f);
}
}
然后在你的onClick上执行:
public void yourOnClickMethod(View view) {
if (mStreamId != 0) {
mSoundPool.stop(mStreamId);
}
String path = getFullFilePath(getApplicationContext(), EditText.getText().toString());
mSoundId = mSoundPool.load(path, 1);
}
答案 1 :(得分:0)
OnCreate只会在Activity的每个生命周期中调用一次。所以OnCreate用于初始化UI。所以它没有在EditText上得到改变。有一个按钮。单击“从edittext获取数据”。这应该可以解决你的问题。