-1

我有一个应用程序,可以在外部存储上搜索歌曲并通过单击按钮来播放它。String path = getFullFilePath(getApplicationContext(), "FILENAME");如果我输入类似 song.mp3 之类的内容,我使用它,它工作正常......我尝试使用EditText.getText().toString(); 除“文件名”之外的东西,但它不起作用。这是我在 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): sample 1 not READY

但是如果我输入et.setText("SongName");它工作正常..我想在edittext中输入一些东西,然后将它用作文件名!谢谢`

4

2 回答 2

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); 
}
于 2012-11-07T13:52:23.770 回答
0

OnCreate 在 Activity 的每个生命周期中只会被调用一次。所以 OnCreate 用于初始化 UI。所以它不会在 EditText 上得到改变。有一个按钮。单击从edittext获取数据。那应该可以解决您的问题。

于 2012-11-07T13:41:45.737 回答