gpt4 book ai didi

android - MaterialDrawer 在构建时崩溃

转载 作者:行者123 更新时间:2023-11-30 00:24:12 28 4
gpt4 key购买 nike

所以我尝试为我的 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com