2013-09-10 3 views
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 

Заранее спасибо! :)

ответ

1

Вы можете упростить свой код, используя свойство «tag», доступное для всех видов и виджетов. Свойство tag является контейнером общего назначения.

Load свойство тег для каждой кнопки с идентификатором звукового файла, связанного с кнопкой, это может быть сделано на деятельности 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 и все запустить тот же кусок кода, не требуется никаких сослагательного наклонения:

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 
+0

Большое спасибо, это очень помогает мне! Попытаться изменить мой код сейчас! :) – Wannabe

+0

Я сделал несколько методов в своей деятельности. Некоторые из этих методов запускаются в моем контекстном меню. например, для использования 'setRingtone();' Мне нужно открыть вид в методе. Что мне там положить – Wannabe

Смежные вопросы