EditText 文本用作文件名

Posted

技术标签:

【中文标题】EditText 文本用作文件名【英文标题】:EditText text use as filename 【发布时间】:2012-11-07 13:34:49 【问题描述】:

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

【问题讨论】:

在 OnCreate 中是否有任何事件发生,例如 Button Click 之类的。然后在按钮上单击您从edittext获取文本。 只有这个在我的按钮点击 public void button1(View view) if (mStreamId != 0) sp.stop(mStreamId); mStreamId = sp.play(mSoundId, 1, 1, 1, 0, 1f); 【参考方案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); 

【讨论】:

11-07 15:07:01.659:W/SoundPool(14064):样本 1 未就绪 查看this question 和SoundPool.OnLoadCompleteListener。样品准备好需要一段时间。【参考方案2】:

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

【讨论】:

我喜欢这样 if (mStreamId != 0) sp.stop(mStreamId); 字符串路径 = getFullFilePath(getApplicationContext(), mEditText.getText().toString()); mSoundId = sp.load(路径, 1); mStreamId = sp.play(mSoundId, 1, 1, 1, 0, 1f);我得到了同样的错误。 ***.com/questions/5202510/soundpool-sample-not-ready。 ***.com/questions/7786314/…。看看这些链接。 如果我输入了我的外部存储上不存在的 edittext 文件名,那么我会得到类似这样的信息 11-07 15:24:35.219: E/SoundPool(14487): error loading /mnt/sdcard/ dub.mp3 但是如果我输入存在的 dub2.mp3 我会得到 11-07 15:24:35.219: E/SoundPool(14487): error loading /mnt/sdcard/dub.mp3 并且每次我再次单击该按钮时它都会给出示例2 未准备好..下次样品 3 未准备好...

以上是关于EditText 文本用作文件名的主要内容,如果未能解决你的问题,请参考以下文章

Android 中通过Java代码动态生成EditText视图,并循环遍历EditText取出遍历的ID和文本框的值

Textview 文本大小应为 editText 文本大小并显示在 listview 中

Android文本输入框EditText禁用分号

Android Word-Wrap EditText 文本

笔画没有应用于矩形到xml drawable用作android中的edittext背景

Android实现EditText的富文本编辑