使用导航抽屉与其他活动

时间:2017-03-18 20:12:25

标签: java android android-activity navigation-drawer

这里的第一个问题,希望我能得到我需要的帮助:) 首先,我试着检查一下这个帖子: Same Navigation Drawer in different Activities 还有很多其他人什么都没得到:\

问题:

所以我制作了一个应该像这样构建的应用程序:

导航抽屉 - 涵盖所有活动。

包含信息的主页

活动

我在抽屉上做了选项去另一个活动,但是:

  1. 如何在其他活动中看到抽屉?
  2. 如何制作一个选项,当我正在进行活动时,再次按下抽屉上的按钮,将我发送到相同的活动,它会关闭抽屉? 有没有选项来检查我现在是否正在进行特定活动? 这是我的主页与抽屉:

    public class Main_Page extends AppCompatActivity
        implements NavigationView.OnNavigationItemSelectedListener {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
    
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main__page);
            Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
            setSupportActionBar(toolbar);
    
            DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
            ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                    this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
            drawer.setDrawerListener(toggle);
            toggle.syncState();
    
            NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
            navigationView.setNavigationItemSelectedListener(this);
        }
    
        @Override
        public void onBackPressed() {
            DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
            if (drawer.isDrawerOpen(GravityCompat.START)) {
                drawer.closeDrawer(GravityCompat.START);
            } else {
                super.onBackPressed();
            }
    
        }
    
        @SuppressWarnings("StatementWithEmptyBody")
        @Override
        public boolean onNavigationItemSelected(MenuItem item) {
            Intent Home=new Intent(Main_Page.this,Main_Page.class);
            Intent Settings = new Intent(Main_Page.this,Settings.class);
            int id = item.getItemId();
    
            if (id == R.id.Main_App)
                startActivity(Home);
            else if (id== R.id.nav_Settings)
                startActivity(Settings);
            else if (id == R.id.Nav_Log_Out) {
                        super.onBackPressed();
            }
    
            DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
            drawer.closeDrawer(GravityCompat.START);
            return true;
        }
    }
    
  3. 谢谢!

1 个答案:

答案 0 :(得分:2)

这是不可能的,你有两个选择

  1. 将单个活动与内容框架布局一起使用,并将此布局替换为不同的片段
  2. 使用具有多个导航抽屉的多个活动,每个活动的项目都标记为已选中。
  3. 最后,两种解决方案都有利有弊,这取决于您的业务逻辑以及每个部分的复杂程度