2015-11-27 115 views
0

我知道以前也有类似的问题,但是有没有清楚易懂的例子来做到这一点。我通常所做的就是从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? 
+1

我从来不知道在软件开发中的一个非常复杂的主题上的新功能是值得赞成的。特别是Android开发,它经历了不同版本的不同版本兼容性问题和设计转换。我不关心如此投票的要点,但请留下一个理由,为什么您对问题进行了低估,使其成为一个更有价值的学习过程。请注意,并非所有的天才都可以在设计和编程概念中掌握所有这些不同的方法。我们所有人在某个时间点都是新手。 – TwoThumbSticks

回答

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

+0

对不起,新手问题,但我现在正在做什么,只要我将MainActivity扩展到另一个活动它说NoBoringActionBarActivity}:java.lang.IllegalStateException:您需要使用Theme.AppCompat主题(或后代)与此活动。 – TwoThumbSticks

+0

然后您需要将AppCompatActivity更改为您正在使用的任何活动。 – k0sh

1

基本上每个活动都有自己的动作条,并且每个动作条可以使用自己的抽屉式导航栏。所以如果你想要相同的导航抽屉。你可以使用Fragment。您可以使MainActivity具有Navigation Drawer并在Mainactivity中使用FrameLayout,然后替换Fragment。如果您希望每个活动都有单个导航抽屉。这不可能。