无法从工具栏菜单项android打开NavigationDrawer

专业版

嗨,我尝试使用本教程在android中制作NavigationDrawer,但我不想更改Drawer的打开方式。教程是这样的:http : //www.androidhive.info/2015/04/android-getting-started-with-material-design/

在本教程中,我想使用菜单项将其打开,并使用工具栏中的默认主页按钮打开抽屉。

这是我的主要代码:

public class First_page extends AppCompatActivity implements FragmentDrawer.FragmentDrawerListener  {

    Button go_layout;
    private Toolbar toolbar;
    private FragmentDrawer drawerFragment;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_first_page);

        toolbar = (Toolbar)findViewById(R.id.toolbar);

        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayShowTitleEnabled(false);
        getSupportActionBar().setHomeButtonEnabled(true);
        getSupportActionBar().setDisplayUseLogoEnabled(true);
        getSupportActionBar().setLogo(R.drawable.page_logo_2);

        drawerFragment = (FragmentDrawer)
                getSupportFragmentManager().findFragmentById(R.id.fragment_navigation_drawer);
        drawerFragment.setUp(R.id.fragment_navigation_drawer, (DrawerLayout) findViewById(R.id.drawer_layout), toolbar);
        drawerFragment.setDrawerListener(this);

        go_layout = (Button)findViewById(R.id.go_to_page);

        go_layout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                Intent intent = new Intent(First_page.this, Full_page.class);
                startActivity(intent);

            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);

        return true;
    }


    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.right_btn) {


            Toast.makeText(First_page.this, "Right_btn clicked", Toast.LENGTH_LONG).show();

            drawerFragment = (FragmentDrawer)
                    getSupportFragmentManager().findFragmentById(R.id.fragment_navigation_drawer);
            drawerFragment.setUp(R.id.fragment_navigation_drawer, (DrawerLayout) findViewById(R.id.drawer_layout), toolbar);
            drawerFragment.setDrawerListener(this);

        }

        return super.onOptionsItemSelected(item);
    }

    @Override
    public void onDrawerItemSelected(View view, int position) {

    }
}
尤金·H

这是我处理NavigationDrawer的打开和关闭的方法。只需在要打开或关闭它的地方调用handleNavDrawer()。

处理抽屉的打开和关闭

public void handleNavDrawer() {
    if (mNavigationDrawer.isDrawerOpen(GravityCompat.START)) {
        mNavigationDrawer.closeDrawer(GravityCompat.START);
    } else {
        mNavigationDrawer.openDrawer(GravityCompat.START);
    }
}

工作实例

public class MainActivity extends AppCompatActivity {

    private DrawerLayout mNavigationDrawer;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_tracker);
        mNavigationDrawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        if (id == R.id.action_search) { 
            handleNavDrawer();
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

    public void handleNavDrawer() {
        if (mNavigationDrawer.isDrawerOpen(GravityCompat.START)) {
            mNavigationDrawer.closeDrawer(GravityCompat.START);
        } else {
            mNavigationDrawer.openDrawer(GravityCompat.START);
        }
    }
}

更新您的示例

public class First_page extends AppCompatActivity implements FragmentDrawer.FragmentDrawerListener  {

    Button go_layout;
    private Toolbar toolbar;
    private FragmentDrawer drawerFragment;
    private DrawerLayout mNavigationDrawer;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_first_page);

        toolbar = (Toolbar)findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayShowTitleEnabled(false);
        getSupportActionBar().setHomeButtonEnabled(true);
        getSupportActionBar().setDisplayUseLogoEnabled(true);
        getSupportActionBar().setLogo(R.drawable.page_logo_2);

        go_layout = (Button)findViewById(R.id.go_to_page);
        go_layout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(First_page.this, Full_page.class);
                startActivity(intent);

            }
        });
        mNavigationDrawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        drawerFragment = (FragmentDrawer) getSupportFragmentManager().findFragmentById(R.id.fragment_navigation_drawer);
        drawerFragment.setUp(R.id.fragment_navigation_drawer, mNavigationDrawer, toolbar);
        drawerFragment.setDrawerListener(this);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }


    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        if (id == R.id.right_btn) {
            Toast.makeText(First_page.this, "Right_btn clicked", Toast.LENGTH_LONG).show();
            handleNavDrawer();
        }
        return super.onOptionsItemSelected(item);
    }

    @Override
    public void onDrawerItemSelected(View view, int position) {
    // Close the Nav Drawer
    // handleNavDrawer();
    }

    public void handleNavDrawer() {
        if (mNavigationDrawer.isDrawerOpen(GravityCompat.START)) {
            mNavigationDrawer.closeDrawer(GravityCompat.START);
        } else {
            mNavigationDrawer.openDrawer(GravityCompat.START);
        }
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Android,工具栏布局中的位置菜单项

来自分类Dev

Android,工具栏布局中的位置菜单项

来自分类Dev

Android 工具栏菜单项背景

来自分类Dev

居中工具栏的菜单项

来自分类Dev

在标题栏工具栏android中添加菜单项文本和文本

来自分类Dev

工具栏菜单项在片段中单击

来自分类Dev

工具栏上等间距的菜单项

来自分类Dev

工具栏菜单项始终处于溢出状态

来自分类Dev

工具栏菜单项和活动的问题

来自分类Dev

如何获取工具栏菜单项的ID?

来自分类Dev

工具栏的底部边框在菜单项下无法正常显示

来自分类Dev

如何在Android工具栏中添加单个菜单项?

来自分类Dev

Android自定义工具栏菜单项标题颜色和样式

来自分类Dev

带工具栏的AppCompatActivity:菜单项未显示在工具栏上

来自分类Dev

在工具栏中获取工具条菜单项的名称

来自分类Dev

如何在工具栏上的溢出菜单中的菜单项上设置字体

来自分类Dev

如何在工具栏上的溢出菜单中的菜单项上设置字体

来自分类Dev

更改工具栏菜单项的颜色(非隐藏操作)

来自分类Dev

如何更改支持工具栏菜单项的onPress行为?

来自分类Dev

在Winforms中的工具栏菜单项旁边放置热键/快捷方式文本

来自分类Dev

v7工具栏OptionsMenu菜单项最右边-如何添加边距

来自分类Dev

单击工具栏上的菜单项会显示一个列表视图

来自分类Dev

更改工具栏的高度后如何将菜单项与center_vertical对齐

来自分类Dev

如何将菜单项显示为片段中工具栏上的动作

来自分类Dev

单击工具栏上的菜单项会显示一个列表视图

来自分类Dev

更改工具栏的高度后如何将菜单项与center_vertical对齐

来自分类Dev

如何在小于 48dp 的工具栏上垂直居中菜单项?

来自分类Dev

当我设置为工具栏的 src 菜单项时,Imageview 不可见

来自分类Dev

Android NavigationDrawer和工具栏

Related 相关文章

  1. 1

    Android,工具栏布局中的位置菜单项

  2. 2

    Android,工具栏布局中的位置菜单项

  3. 3

    Android 工具栏菜单项背景

  4. 4

    居中工具栏的菜单项

  5. 5

    在标题栏工具栏android中添加菜单项文本和文本

  6. 6

    工具栏菜单项在片段中单击

  7. 7

    工具栏上等间距的菜单项

  8. 8

    工具栏菜单项始终处于溢出状态

  9. 9

    工具栏菜单项和活动的问题

  10. 10

    如何获取工具栏菜单项的ID?

  11. 11

    工具栏的底部边框在菜单项下无法正常显示

  12. 12

    如何在Android工具栏中添加单个菜单项?

  13. 13

    Android自定义工具栏菜单项标题颜色和样式

  14. 14

    带工具栏的AppCompatActivity:菜单项未显示在工具栏上

  15. 15

    在工具栏中获取工具条菜单项的名称

  16. 16

    如何在工具栏上的溢出菜单中的菜单项上设置字体

  17. 17

    如何在工具栏上的溢出菜单中的菜单项上设置字体

  18. 18

    更改工具栏菜单项的颜色(非隐藏操作)

  19. 19

    如何更改支持工具栏菜单项的onPress行为?

  20. 20

    在Winforms中的工具栏菜单项旁边放置热键/快捷方式文本

  21. 21

    v7工具栏OptionsMenu菜单项最右边-如何添加边距

  22. 22

    单击工具栏上的菜单项会显示一个列表视图

  23. 23

    更改工具栏的高度后如何将菜单项与center_vertical对齐

  24. 24

    如何将菜单项显示为片段中工具栏上的动作

  25. 25

    单击工具栏上的菜单项会显示一个列表视图

  26. 26

    更改工具栏的高度后如何将菜单项与center_vertical对齐

  27. 27

    如何在小于 48dp 的工具栏上垂直居中菜单项?

  28. 28

    当我设置为工具栏的 src 菜单项时,Imageview 不可见

  29. 29

    Android NavigationDrawer和工具栏

热门标签

归档