Страница 1 из 1

Вынести повторяющийся код

Добавлено: 07 июл 2015, 23:30
antihawk
Есть кусок кода, который повторяется в каждом Activity, как вынести в отдельный класс? Никак не получается реализовать это.

Код: Выделить всё

if (sPrefSettings.contains(APP_PREFERENCES_BACKICON))
		{
			backIconAccept  = sPrefSettings.getInt(APP_PREFERENCES_BACKICON, 1);
			
			switch (backIconAccept)
			{
			case 1:
				RelativeLayoutHomeworkAdd.setBackgroundResource(R.drawable.back1);
				break;	
			case 2:
				RelativeLayoutHomeworkAdd.setBackgroundResource(R.drawable.back2);
				break;
			case 3:
				RelativeLayoutHomeworkAdd.setBackgroundResource(R.drawable.back3);
				break;
			}
		}

Re: Вынести повторяющийся код

Добавлено: 07 июл 2015, 23:34
Dark67
Можно создать абстрактный класс потомок Activity и от него наследоваться всем остальным Активитям )))

Re: Вынести повторяющийся код

Добавлено: 08 июл 2015, 00:06
antihawk
Dark67 писал(а):Можно создать абстрактный класс потомок Activity и от него наследоваться всем остальным Активитям )))
Я так и попробовал, но реализация подкачала. Нужна конкретная помощь с кодом.

Re: Вынести повторяющийся код

Добавлено: 08 июл 2015, 00:40
rezak90
Помощь в наследовании? Хм... могу посоветовать любую книгу по ООП)))

Re: Вынести повторяющийся код

Добавлено: 08 июл 2015, 10:40
doter.ua
В каком-нибудь своем классе:

Код: Выделить всё

public static myMethod( int backIconAccept, RelativeLayout RelativeLayoutHomeworkAdd ){
    switch (backIconAccept) 
            { 
            case 1: 
                RelativeLayoutHomeworkAdd.setBackgroundResource(R.drawable.back1); 
                break;     
            case 2: 
                RelativeLayoutHomeworkAdd.setBackgroundResource(R.drawable.back2); 
                break; 
            case 3: 
                RelativeLayoutHomeworkAdd.setBackgroundResource(R.drawable.back3); 
                break; 
      } 
}
в активити:

Код: Выделить всё

    if (sPrefSettings.contains(APP_PREFERENCES_BACKICON)) { 
          MyClass.myMethod( sPrefSettings.getInt(APP_PREFERENCES_BACKICON, 1), RelativeLayoutHomeworkAdd );
     }
ЗЫ с наследованием тоже норм, х3 почему у тебя не получилось. В таких случаях кидают код своего "супер" класса.