如何从另一个活动调用导航抽屉菜单

时间:2015-11-27 02:00:14

标签: android android-layout android-activity

我知道之前已经提出了类似的问题但是有没有明显易于理解的例子来做到这一点。我通常做的是从Android Studio创建一个项目,然后选择带有导航的项目。但在我打电话给下一个活动后,它再也没有导航抽屉了。我只能在工具栏中的主要活动中添加一个后退按钮。我想要的就是能够从我的所有活动中调用导航抽屉,即使是那些在工具栏上有后退按钮的活动。

是否有最佳做法可以使导航抽屉菜单可调用,这适用于不同的场景。例如

main activity with drawer ->  2nd activity with toolbar but has back button. How do you call the drawer menu?
main activity with drawer ->  3rd activity with no toolbar.  call navigation drawer thru swipe or buttons?

2 个答案:

答案 0 :(得分:1)

基本上每个Activity都有自己的actionBar,每个操作栏都可以使用自己的Navigation Drawer。所以如果你想要同样的导航抽屉。你可以使用Fragment。您可以使MainActivity具有导航抽屉并在Mainactivity中使用FrameLayout然后替换片段。如果你想每个Activity都有单个导航抽屉。这是不可能的。

答案 1 :(得分:0)

只需通过拥有一个基本活动即可实现这一点,您可以从任何您希望它拥有DL的活动进行扩展。例如

public abstract class SampleBaseActivity extends AppCompatActivity {

    protected abstract boolean isHome();

    private DrawerLayout drawerLayout;

    @Override protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.drawer_layout);
        drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
        android.support.v7.widget.Toolbar toolbar = (android.support.v7.widget.Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        if (getSupportActionBar() != null) {
            if (!isHome()) {
                getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_back);
            } else {
                getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_menu);

            }
            getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        }
    }

    @Override public boolean onOptionsItemSelected(MenuItem item) {
        if (item.getItemId() == android.R.id.home) {
            if (isHome()) {
                drawerLayout.openDrawer(GravityCompat.START);
            } else {
                onBackPressed();
            }
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

现在,您希望每个活动中的抽屉都延伸activity而不是正常的AppCompatActivity