好吧,我正在尝试创建一个需要某种ActionBar的应用程序,它只需要安排和设计一次,然后为我的所有APP活动提供服务。 我不确定这是如何运作的,需要一点指导。
为了让你了解我想要的东西,我想要这样的东西:
顶部,即APP的一般。然后是下面以及带有图标的子菜单,有不同的选项。
究竟需要使用它?我一直在修补ActionBar,但我认为它是最顶级的..但是对于另一个你可以吗?
两者都希望它们是静态的,并且总是在我的APP的每个活动中,而不必复制和粘贴每个una的代码。我想这就是你想要将它嵌入任何地方,只编程一次。
答案 0 :(得分:1)
这个问题与Android没什么关系。这是关于如何重复使用代码的地方。
您可以将继承用于此目的。
假设您有3种不同的活动,但您希望它们具有一组常用功能 - 在您的情况下为ActionBar
。
在这种情况下,您可以创建一个abstract class
来实现ActionBar
,并使您的所有活动都继承自此abstract class
。
层次结构可能如下所示:
public abstract class BaseActivity extends AppCompatActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.oncreate(savedInstanceState);
// Setup your common ActionBar here.
}
}
现在要让这个abstract class
完成它的工作,你必须让你的所有活动继承这个,就像这样:
public class MyActivityA extends BaseActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.oncreate(savedInstanceState); // It's important to call through to super to have it setup the ActionBar for the current activity.
// Next call setContentView(R.layout.my_activity_layout);
// And what else you need to do.
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_a_menu, menu);
return true;
}
}
对于下一个Activity
,你也会这样做:
public class MyActivityB extends BaseActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.oncreate(savedInstanceState);
// Next call setContentView(R.layout.my_activity_layout);
// And what else you need to do.
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_b_menu, menu);
return true;
}
}
onCreateOptionsMenu
已在您的所有活动中实施,以创建不同的菜单项,同样适用于您的onOptionsItemSelected
。
现在,这是如何分享多个类的基本功能的一个非常基本的示例,它应该是您必须在 之前了解的事情开始使用Android,因为上面的代码是常见的Java。
另请注意,这是一个非常广泛的问题。
我其实只是想把它放在评论中,但我觉得它会变得太大而不适合评论。