Android 关于跨多个活动重用工具栏的问题
我是Android开发的新手,这个问题可能有一个简单的答案,我想不出来 我现在想在我的应用程序的几乎每个活动中使用工具栏。我已经创建了一个包含所有项目侦听器的基本活动,以及一个设置工具栏Android 关于跨多个活动重用工具栏的问题,android,Android,我是Android开发的新手,这个问题可能有一个简单的答案,我想不出来 我现在想在我的应用程序的几乎每个活动中使用工具栏。我已经创建了一个包含所有项目侦听器的基本活动,以及一个设置工具栏(setSupportActionBar),以及只包含工具栏及其设置的XML的方法。只有这一部分很好 现在,当我想要任何活动来扩展此基本活动时,我的问题来了: 是否必须在基本活动和子活动中设置ContentView 如果在调用super.onCreate后在子活动中设置ContentView时,在onCreat
(setSupportActionBar)
,以及只包含工具栏及其设置的XML的方法。只有这一部分很好
现在,当我想要任何活动来扩展此基本活动时,我的问题来了:
- 是否必须在基本活动和子活动中设置ContentView
- 如果在调用super.onCreate后在子活动中设置ContentView时,在onCreate方法的基本活动中设置工具栏,则会覆盖该工具栏。现在唯一有效的方法是在子级中调用super.onCreate,然后调用setContentView(childLayout),然后调用基本活动的扩展方法来设置工具栏。我觉得这有点骇客,应该有更好的方法
- 是否必须手动将工具栏添加到每个子活动的XML中?这不是一个大问题,但我觉得可能有一种方法可以“自动”将其添加到每个孩子身上
- 是否必须在基本活动和子活动中设置ContentView ->不,您不必同时设置ContentView。只有在子活动中设置才可以
- 如果我在onCreate方法的基本活动中设置工具栏, 调用后在子活动中设置ContentView时 super.onCreate将覆盖它。现在唯一有效的办法是 在子对象中调用super.onCreate,然后 setContentView(childLayout),然后调用 设置工具栏的baseActivity。我觉得这有点令人讨厌 应该有更好的方法来做到这一点 ->在要使用的活动中包括工具栏布局。如果您想在每个活动中使用,那么请在每个xml中包含
- 我是否必须手动将工具栏添加到每个孩子的xml中 活动?这不是什么大问题,但我觉得可能会有问题 “自动”将其添加到每个子项中的方法 ->是在每个活动的onCreate()中启动工具栏。我认为没有其他方法可以做到这一点
public abstract class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(getContentView());
// here you can do common things for all activities like toolbar
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); // Note: every activity xml should have toolbar.
setSupportActionBar(toolbar);
onViewReady(savedInstanceState, getIntent());
}
protected void onViewReady(Bundle savedInstanceState, Intent intent) {
// To be used by child activities.
}
protected abstract int getContentView();
}
和将子活动中的基本活动扩展为
public class ChildActivity extends BaseActivity{
@Override
protected int getContentView() {
return R.layout.activity_child;
}
@Override
protected void onViewReady(Bundle savedInstanceState, Intent intent) {
super.onViewReady(savedInstanceState, intent);
// initializations....
}
}
更简单的方法是使用styles.xml。您可以扩展这个@VivekMishra吗?首先尝试自己扩展它。你的应用程序主题应该从
ActionBar
主题扩展