Скажем, у меня есть базовый класс BaseActivity, который расширяет AppCompatActivity. Внутри BaseActivity у меня есть:
public abstract class BaseActivity extends AppCompatActivity {
protected abstract void setUp();
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setUp();
}
}
Затем все мои классы Activity расширяют BaseActivity следующим образом:
public class MainActivity extends BaseActivity implements SwipeRefreshLayout.OnRefreshListener {
private ActivityMainBinding mBinding;
private FeedTopicsFragment mFeedTopicsFragment;
private UserDiscussionsFragment mUserDiscussionsFragment;
private UserConversationsFragment mUserConversationsFragment;
private final String TAG = getClass().getSimpleName();
@Override
protected void setUp() {
mBinding = DataBindingUtil.setContentView(MainActivity.this, R.layout.activity_main);
String signedInUserId = SessionPersistor.getSignedInUserId();
if (signedInUserId == null) {
NavigationHelper.goToSignInUserActivity(this);
return;
}
setSupportActionBar(mBinding.activityMainAppbar);
// do other stuff to mBinding etc, all at the beginning of onCreate
}
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
loadData();
}
}
Возможна ли вообще такая реализация? Я хочу избавить меня от лишних хлопот, связанных с тем, что я не забываю каждый раз вызывать setUp, поскольку для каждого действия это одно и то же: в onCreate мне нужно настроить представления и т. д. Будет ли это вызывать исключение, потому что setUp - абстрактный метод, но он вызывается в BaseActivity onCreate, но в то время, когда setUp вызывается из MainActivity, setUp уже реализован в MainActivity, просто порядок вызова setUp определяется в методе BaseActivityonCreate?
ошибки нет, я просто спрашиваю, не является ли это плохой практикой
нет. я не вижу ничего плохого в подходе
Все ок, хорошее использование полиморфизма




вы можете вызвать setup из onCreate BaseActivity.
в чем проблема, когда вы запускаете приведенный выше код?