Хорошо, вопрос есть. В моем приложении Android у меня есть два отдельных действия для опций и для основной деятельности. В основной деятельности есть место, когда он проверяет изменения в параметрах и применяет стили. Это выглядит следующим образом:Как обрабатывать несколько методов Android?
if (prefs.getBoolean("opt_changed", true)) {
Theme = prefs.getInt("theme", Theme);
Font = prefs.getInt("font", Font);
Size = prefs.getInt("size", Size);
SetApplicableStyle(this, Theme, Font, Size);
/** Setting opt_changed to false. */
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean("opt_changed", false);
editor.commit(); // apply changes
}
SetApplicableStyle
метод, называемый здесь, выглядит следующим образом:
public void SetApplicableStyle (DTypeActivity dTypeActivity, int Theme, int Font, int Size) {
// Retrieving the EditText and the View as objects
final EditText edit_text = (EditText) findViewById(R.id.editText1);
final View main_view = (View) findViewById(R.id.mainview);
// Setting the theme
switch(Theme){
case 1:
SetThemeLight (this);
break;
case 2:
SetThemeBlue (this);
break;
case 3:
SetThemeDark (this);
break;
}
// Setting the font
switch(Font){
case 1:
SetFontSans (this);
break;
case 2:
SetFontSerif (this);
break;
case 3:
SetFontMono (this);
break;
}
// Setting the size
switch(Size){
case 1:
SetSizeSm (this);
break;
case 2:
SetSizeMd (this);
break;
case 3:
SetSizeBg (this);
break;
}
}
И как пример из Set[Something][Somewhat]
методов, есть SetThemeLight
один:
public void SetThemeLight (DTypeActivity dTypeActivity) {
final EditText edit_text = (EditText) findViewById(R.id.editText1);
final View main_view = (View) findViewById(R.id.mainview);
main_view.setBackgroundDrawable(getResources().getDrawable(R.drawable.grey_background));
edit_text.getBackground().setAlpha(0);
edit_text.setTextColor(getResources().getColor(R.color.DrText));
}
Мой вопрос касается количества методов, которые используются в этом простом приложении. Я думал об уменьшении количества кода и реализовал метод SetApplicableStyle
. Теперь я думаю, было бы хорошо избавиться от Set[Something][Somewhat]
и вывести линии из них прямо в случаи переключателей SetApplicableStyle
. Моя основная забота - это количество методов, но я знаю, что огромные методы также являются плохой практикой. Что было бы лучшим решением здесь?
Полный исходный код доступен here.
Я бы предложил только установить HashMap в отдельный метод 'lookupStyle' или что-то в этом роде и использовать его в методе' setApplicableStyle', так как я не вижу другого способа для доступа к карте из любого места. Если я объявляю карту в «OnCreate», у меня возникают проблемы с ее доступом из «OnResume», но мне она нужна в обоих. В любом случае, спасибо за эту идею. – wswld
@VsevolodGlumov да, вы должны сделать карту глобально доступной как-то. Я проигнорировал это в своем ответе, потому что это полностью зависит от структуры вашего приложения. Я помню, что я использовал объект контекста глобального приложения, когда я когда-то делал приложение для Android, но это может вызвать проблемы, если процесс уничтожается для выпуска ресурсов. –