0
我有一个基本活动,我的所有活动都从中延伸。这门课包括基本知识,如工具栏和导航抽屉。动态地将工具栏添加到抽象活动
我正在寻找一种解决方案,该解决方案将允许我在扩展活动中重写方法,以便我可以更改活动将使用的工具栏的类型。
public abstract class BaseActivity extends AppCompatActivity {
private Toolbar mToolbar;
private FrameLayout mContentFrame;
private ActivityFragment mActivityFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(setLayout());
initViews();
initToolbar();
}
protected int setLayout() {
return R.layout.activity_base;
}
//I want to override this and provide a different toolbar layout!
protected int setToolbarLayout(){
return R.layout.toolbar;
}
protected void initViews() {
mToolbar = (Toolbar) findViewById(R.id.toolbar);
mContentFrame = (FrameLayout) findViewById(R.id.contentFrame);
}
private void initToolbar() {
setSupportActionBar(mToolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
mToolbar.setElevation(10f);
}
}
protected void setContentFragment(ActivityFragment fragment) {
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(getContentFrame().getId(), fragment).commit();
supportInvalidateOptionsMenu();
this.mActivityFragment = fragment;
setTitle(fragment.getTitle(this));
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
NavUtils.navigateUpFromSameTask(this);
return true;
}
return super.onOptionsItemSelected(item);
}
public Toolbar getToolbar() {
return mToolbar;
}
public FrameLayout getContentFrame() {
return mContentFrame;
}
public ActivityFragment getActivityFragment() {
return mActivityFragment;
}
我试图膨胀的setContentView(后工具栏)和动作条设置它,但它似乎没有图标或窗口小部件!
这很好,但你已经做出了不必要的方法,使代码变得复杂难以理解。 –