怀疑动作栏,工具栏等

时间:2016-03-20 20:34:47

标签: android android-actionbar toolbar

好吧,我正在尝试创建一个需要某种ActionBar的应用程序,它只需要安排和设计一次,然后为我的所有APP活动提供服务。 我不确定这是如何运作的,需要一点指导。

为了让你了解我想要的东西,我想要这样的东西:

example app

顶部,即APP的一般。然后是下面以及带有图标的子菜单,有不同的选项。

究竟需要使用它?我一直在修补ActionBar,但我认为它是最顶级的..但是对于另一个你可以吗?

两者都希望它们是静态的,并且总是在我的APP的每个活动中,而不必复制和粘贴每个una的代码。我想这就是你想要将它嵌入任何地方,只编程一次。

1 个答案:

答案 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。

另请注意,这是一个非常广泛的问题。

我其实只是想把它放在评论中,但我觉得它会变得太大而不适合评论。