android - MaterialDrawer 在构建时崩溃

标签 android android-studio materialdrawer

所以我尝试为我的 Android 应用构建一个 MaterialDrawer 侧边栏。但是当抽屉打开时,我的应用程序崩溃了……有什么想法吗? 我的崩溃日志如下所示:

Caused by: java.lang.RuntimeException: please pass an activity
at com.mikepenz.materialdrawer.DrawerBuilder.build(DrawerBuilder.java:1300)

我不明白该 Activity 应该传递到哪里,但事实并非如此。我提到我在一个类中构建了我的 MaterialDrawer 侧边栏,我将用作多个 Activity 的父级。所以这个类的目的只是为了为我的应用程序生成这个侧边菜单。 我的代码:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sidebar_menu);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        User u = MainProvider.sharedInstance().getCurrentUser(this);
        TextView usernameText = (TextView) headerView.findViewById(R.id.usernameText);
        String profilePictureUrl = u.getSettings().get("profile_picture").getAsString();
        //initialize and create the image loader logic
        DrawerImageLoader.init(new AbstractDrawerImageLoader() {
            @Override
            public void set(ImageView imageView, Uri uri, Drawable placeholder) {
                Picasso.with(imageView.getContext()).load(uri).placeholder(placeholder).into(imageView);
            }

            @Override
            public void cancel(ImageView imageView) {
                Picasso.with(imageView.getContext()).cancelRequest(imageView);
            }
        });
        //if you want to update the items at a later time it is recommended to keep it in a variable
        PrimaryDrawerItem item1 = new PrimaryDrawerItem().withIdentifier(1).withName(R.string.dashboard);
        SecondaryDrawerItem item2 = new SecondaryDrawerItem().withIdentifier(2).withName(R.string.point_of_sale);
        // Create the AccountHeader
        AccountHeader headerResult = new AccountHeaderBuilder()
                .withActivity(this)
                .withHeaderBackground(R.drawable.side_nav_bar)
                .addProfiles(
                        new ProfileDrawerItem().withName(u.getUsername()).withEmail(u.getEmail()).withIcon(Uri.parse(profilePictureUrl))
                )
                .withOnAccountHeaderListener(new AccountHeader.OnAccountHeaderListener() {
                    @Override
                    public boolean onProfileChanged(View view, IProfile profile, boolean currentProfile) {
                        return false;
                    }
                })
                .build();
        new DrawerBuilder()
                .withAccountHeader(headerResult)
                .withToolbar(toolbar)
                .addDrawerItems(
                        item1,
                        new DividerDrawerItem(),
                        item2,
                        new SecondaryDrawerItem().withName(R.string.point_of_sale)
                )
                .withOnDrawerItemClickListener(new Drawer.OnDrawerItemClickListener() {
                    @Override
                    public boolean onItemClick(View view, int position, IDrawerItem drawerItem) {
                        // do something with the clicked item :D
                        return false;
                    }
                })
                .withSavedInstance(savedInstanceState)
                .build();
    }

谢谢大家的宝贵时间!

最佳答案

您需要在 Fluent Builder 中使用 Activity。

又名 - 您忘记指定 .withActivity(this)

试试这个:

    new DrawerBuilder()
        .withActivity(this)
        .withAccountHeader(headerResult)
        .withToolbar(toolbar)
        .addDrawerItems(
            item1,
            new DividerDrawerItem(),
            item2,
            new SecondaryDrawerItem().withName(R.string.point_of_sale)
        )
        .withOnDrawerItemClickListener(new Drawer.OnDrawerItemClickListener()
        {
            @Override
            public boolean onItemClick(View view, int position, IDrawerItem drawerItem)
            {
                // do something with the clicked item :D
                return false;
            }
        })
        .withSavedInstance(savedInstanceState)
        .build();

关于android - MaterialDrawer 在构建时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45697552/

相关文章:

android - 如何在 Android 中检索设备的说明符名称

Javascript 在 WebView 中不起作用 - Android?

安卓工作室 : install an update patch

java - 如何在Android中调试 "unfortunately app has stopped"?

java - 是否可以将值从 Adapter 传递到 Activity?

Android Studio 3.0 Beta 在 macOS Sierra 上不断卡住

android - 如何使用 3rd 方库构建 android studio 项目

android - 无法从 URL 加载个人资料图像和标题背景

android - fragment 中的 MaterialDrawer 后退按钮

java - 键盘即将到达 EditText 字段并因此将其隐藏。如何防止键盘隐藏EditText字段?