Написание базового класса очень хорошо поможет вам в разработке, он сокращает повторяющийся код, придерживается ООП, то есть реализует наследование. Такой класс - есть основой, или же "фундаментом" для его наследников.
В этой статье, я кратко расскажу о создании базовых(родительских) классов, а так же покажу на практике что оно такое, и с чем его есть.
Со временем я начал замечать, что при наследовании суперкласса Activity (а так же, FragmentActivity, Fragment и т.д), каждый мною созданный и унаследованный класс, обзаводиться кучей кода. В следствии чего, размер класса увеличивается. Меня это немножко выводило из себя, зачем каждый раз писать кучу лишнего кода, я люблю минимизацию без потери производительности. Посидев у компьютера вечером и пошарив интернет набрел на пару статей и решил попробовать создать свой базовый класс, и объясню почему, дело в том что с помощью базовых классов мы избавляемся от лишней кучи кода, он стает читабельным, ну и скорее всего это просто интересно.
За основу я брал статью написанную на одном блоге, но я решил немного освежить тему и добавить своих красок.
В общем приступим к написанию кода.
Ну вроде все, посмотрим на код, для общей картины:
Базовый класс создан, это хорошо, теперь напишем Активность которая будет наследовать его:
В этой статье, я кратко расскажу о создании базовых(родительских) классов, а так же покажу на практике что оно такое, и с чем его есть.
Со временем я начал замечать, что при наследовании суперкласса Activity (а так же, FragmentActivity, Fragment и т.д), каждый мною созданный и унаследованный класс, обзаводиться кучей кода. В следствии чего, размер класса увеличивается. Меня это немножко выводило из себя, зачем каждый раз писать кучу лишнего кода, я люблю минимизацию без потери производительности. Посидев у компьютера вечером и пошарив интернет набрел на пару статей и решил попробовать создать свой базовый класс, и объясню почему, дело в том что с помощью базовых классов мы избавляемся от лишней кучи кода, он стает читабельным, ну и скорее всего это просто интересно.
За основу я брал статью написанную на одном блоге, но я решил немного освежить тему и добавить своих красок.
В общем приступим к написанию кода.
Создадим абстрактный класс BaseActivity, который наследуется от базового класса Activity.
Мы создали класс, от которого будем наследовать все созданные нами новые Активности(Activity). Абстрактный метод getLayoutResourceId(), будет возвращать нам ссылку на layout нового Activity.
public abstract class BaseActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(getLayoutResourceId()); init(); } protected abstract int getLayoutResourceId(); protected void init(); }
Мы создали класс, от которого будем наследовать все созданные нами новые Активности(Activity). Абстрактный метод getLayoutResourceId(), будет возвращать нам ссылку на layout нового Activity.
В методе init(),будем писать остальной код.
Для комфорта можно добавить несколько новых методов, которые возможно вам понадобятся в разработке.
Этот кусок кода дописываем в BaseActivity:
public void toast(String text) { Toast.makeText(this, text, Toast.LENGTH_SHORT).show(); } public Button getButton(int rID) { return (Button) findViewById(rID); } public EditText getEditText(int rID) { return (EditText) findViewById(rID); } public TextView getTextView(int rID) { return (TextView) findViewById(rID); } public void setClicked(int rId, View.OnClickListener listener) { View view = findViewById(rID); view.setOnClickListener(listener); }Так же, если вы хотите выводить логи, а писать что-то вроде такого:
Log.d(“myLogs”,”это будет видно в логах”);каждый раз нету желания, напишем еще один метод и добавим одну переменную:
private static final String TAG = “myLog”; public void showLog(String message){ Log.d(this.TAG,message); }
Ну вроде все, посмотрим на код, для общей картины:
public abstract class BaseActivity extends Activity { private static final String TAG = "myLog"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(getLayoutResourceId()); init(); } protected abstract int getLayoutResourceId(); protected abstract void init(); public void toast(String text) { Toast.makeText(this, text, Toast.LENGTH_SHORT).show(); } public Button getButton(int rID) { return (Button) findViewById(rID); } public EditText getEditText(int rID) { return (EditText) findViewById(rID); } public TextView getTextView(int rID) { return (TextView) findViewById(rID); } public void setClicked(int rId, View.OnClickListener listener) { View view = findViewById(rId); view.setOnClickListener(listener); } public void showLog(String message) { Log.d(this.TAG, message); } }
Базовый класс создан, это хорошо, теперь напишем Активность которая будет наследовать его:
public class MainActivity extends BaseActivity { TextView tv; @Override protected int getLayoutResourceId() { return R.layout.activity_main; } @Override protected void init() { tv = (TextView) findViewById(R.id.tv); tv.setText("Это написано с помощою базового компонента"); showLog("работает!!!"); toast("работает!!!"); } }Я надеюсь расписал вполне читабельно, кстати начал использовать базовые классы в своем проекте, честно говоря очень удобно. Поэтому если есть желание экспериментировать и пробовать, пожалуйста.
Casino, poker, and poker Archives - DrmCD
ОтветитьУдалитьJuly 23, 2013 군산 출장안마 by drmcd. Casino, poker, and poker · July 27, 2013 · Casino, 안동 출장마사지 poker, 파주 출장샵 and poker · July 화성 출장샵 28, 2013 · Casino, poker, and poker · July 29, 2013 · 부산광역 출장마사지 Casino,