所以我试着为我的安卓应用创建了一个MaterialDrawer侧边栏。但是,当抽屉点击build my app crashes..any时,我会想到为什么?我的崩溃日志是这样的:
Caused by: java.lang.RuntimeException: please pass an activity
at com.mikepenz.materialdrawer.DrawerBuilder.build(DrawerBuilder.java:1300)我不知道该活动应该在哪里传递,也不应该在哪里传递。我提到我在一个类中构建了我的MaterialDrawer侧边栏,我将使用它作为多个活动的父类。所以这个类的目的仅仅是为我的应用程序生成这个侧边菜单。我的代码:
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();
}感谢大家抽出时间来!
发布于 2017-08-16 00:53:10
你需要在你的流利构建器中使用一个活动。
aka -您忘记指定.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();https://stackoverflow.com/questions/45697552
复制相似问题