Я хочу создать абстрактный класс BaseActivity
, от которого бы наследовались остальные Activity
в проекте, во всех классах Activity у меня сейчас используется Toolbar
, поэтому хочу перенести функционал связанный с Toolbar
в BaseActivity
. Не знаю, как это правильно сделать.
Делаю так, класс BaseActivity
:
public abstract class BaseActivity extends AppCompatActivity {
Toolbar toolbar;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
// NullPointerException
toolbar.setTitleTextColor(Color.WHITE);
toolbar.setSubtitleTextColor(Color.WHITE);
toolbar.setNavigationIcon(R.drawable.ic_arrow_back_24dp);
}
public void addToolbarTitle(String titleName){
toolbar.setTitle(titleName);
};
}
Потом наследуюсь обычной Activity
от BaseActivity
:
public class ConversationActivity extends BaseActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_conversation);
}
}
Получаю NullPointerException
в BaseActivity
, как это сделать правильно?
До вызова setContentView()
представления не существует и вызов findViewById(R.id.toolbar)
вернёт null
. Вынесите код установки toolbar'а в отдельный метод в BaseActivity
и вызывайте его в onCreate()
дочерних классов после установки макета.
public abstract class BaseActivity extends AppCompatActivity {
Toolbar toolbar;
protected void setToolbar() {
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
toolbar.setTitleTextColor(Color.WHITE);
toolbar.setSubtitleTextColor(Color.WHITE);
toolbar.setNavigationIcon(R.drawable.ic_arrow_back_24dp);
}
public void addToolbarTitle(String titleName){
toolbar.setTitle(titleName);
};
}
public class ConversationActivity extends BaseActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_conversation);
setToolbar();
}
}
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Во время нажатия на EditText появляется клавиатура, но когда открываем NavigationDrawer то она никуда не пропадает и даже если перейдем на другой фрагмент...
Есть текставик содержащий луа скрипты и ненужный мусорНужно выводить куски текста скажем от "local" до "}" по нажатию кнопки
Как перенести процесс сборки проекта на отдельную машину? поверхностный гугл не дал внятных результатовКто связывался с этим? пишу в AS