我在onCreate()中放置了以下代码,将我在每个Activity中使用的工具栏设置为ActionBar:
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
这很好用并显示每个Activity中的后退箭头和标题,这是必要的,因为我们将自定义内容添加到我们的ToolBar中,但是在每个Activity中都必须这样做很麻烦和烦人。
在没有重复的情况下实现此行为的最佳方法是什么?它可以用风格来完成吗?
答案 0 :(得分:1)
您应该像这样创建基本活动:
public class Base extends AppCompatActivity {
TextView icon1;
@Override
public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) {
super.onCreate(savedInstanceState, persistentState);
initToolbar()
}
public void initToolbar() {
.
.
.
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
if (showIcon1())
icon1.setVisibility(View.VISIBLE);
else
icon1.setVisibility(View.GONE);
}
public boolean showIcon1(){
return true;
}
和其他活动:
public class OtherActivity extends Base {
@Override
public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) {
super.onCreate(savedInstanceState, persistentState);
}
@Override
public boolean showIcon1() {
return false;
}<br>
希望得到这个帮助。
答案 1 :(得分:0)
我不确定&#34;最好&#34;但如果你真的想在你的所有活动中有这两个选择:
继承:一种非常常见的Android / Java方法是将Activity
子类化,然后将其作为基础。 E.g:
public class BaseActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setupToolbar();
}
private void setupToolbar() {
// do whatever you need to do
}
}
public class YourFancyClass extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Do anything you need to. The toolbar is set by the base class.
}
}
这是一个选项(非常受欢迎)
基本上有一个能够设置工具栏的对象。创建可以表示该行为的接口。有一个这种行为的实现(Java通常称它们为XxxxxImpl
,并将该接口和实现传递给需要它的活动。
听起来更复杂,但一旦你把它们放在一起,它就会非常干净和清晰。