0

我认为最好先说,我最近开始了 Android 编程。尽管我现在变得更好了,但我似乎无法找到优化我的代码的好方法。

我已经写了这段代码。是音板。当您长按一个按钮时,您可以将其保存为铃声、闹钟、通知或与您的朋友分享。对于每种方法,我都制作了一个字符串。

该字符串由相应的按钮设置为“btn1”到“btn20”。在此之后,我打开方法(在下面的示例中showSelectedSaveDialog()。在该方法中,我做了一个 if 或 if else 语句来打开正确的声音。

这种编码方式会产生很长的代码。因为对于每个按钮,我都必须if else发表声明。有没有更好的方法来编码种类代码?有没有好的教程,或者类似的东西?或者有人可以发布示例?

Setting the string:

ringToneManager = "btn1";
showSelectSaveDialog();

Setting the correct sound:

if (str.equals("btn1")) {
    fIn = getSherlockActivity().getBaseContext().getResources()
        .openRawResource(R.raw.sound01);

Starting the method to share the sound file

shareButton("btn14");

Getting the corresponding sound file

private void shareButton(String str) {
    // SAVE THE FILE
    byte[] buffer = null;

    if (str.equals("btn1")) {
        fIn = getSherlockActivity().getBaseContext().getResources()
                .openRawResource(R.raw.sound01);
[...] etc

提前致谢!:)

4

1 回答 1

1

您可以使用所有视图和小部件上可用的“标记”属性来简化代码。tag 属性是一个通用容器。

使用与按钮关联的声音文件的 id 为每个按钮加载标签属性,这可以在活动 onCreate 上完成:

findViewById(R.id.btn1).setTag(R.raw.sound01);
findViewById(R.id.btn2).setTag(R.raw.sound02);
//etc.
findViewById(R.id.btn20).setTag(R.raw.sound20);

每个按钮现在可以共享相同的 onClick 处理程序,并且都运行相同的代码,不需要 if:

public void onClick(View arg0) {
    fIn = getSherlockActivity().getBaseContext().getResources().openRawResource((Integer)arg0.getTag());
}

同样,将 shareButton 方法更改为采用整数而不是字符串:

shareButton((Integer)arg0.getTag());

private void shareButton(int soundID) {
    // SAVE THE FILE
    byte[] buffer = null;

    fIn = getSherlockActivity().getBaseContext().getResources().openRawResource(soundID);
[...] etc
于 2013-09-10T13:49:06.917 回答