EditText文本用作文件名

时间:2012-11-07 13:34:50

标签: android android-edittext soundpool

我有应用程序将在外部存储上搜索歌曲并通过单击按钮播放它。我使用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中输入内容然后将其用作文件名! 谢谢 `

2 个答案:

答案 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获取数据”。这应该可以解决你的问题。