Stacktrace:
09-10 07:56:56.448 24867-24867/? E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.IllegalArgumentException: DrawerLayout must
Error:
Illegal Argument Exception - DrawerLayout must be measured with MeasureSpec.EXACTLY
From error log i can suggest to create custom class that extends DrawerLayout
and forcing the correct Measure_Specs
:
public class MyDrawerLayout extends DrawerLayout {
public MyDrawerLayout(Context context) {
super(context);
}
public MyDrawerLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MyDrawerLayout(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
widthMeasureSpec = MeasureSpec.makeMeasureSpec(
MeasureSpec.getSize(widthMeasureSpec), MeasureSpec.EXACTLY);
heightMeasureSpec = MeasureSpec.makeMeasureSpec(
MeasureSpec.getSize(heightMeasureSpec), MeasureSpec.EXACTLY);
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
}
or As a temporary workaround try to set layout_width
and/or layout_height
to a specific size (e.g. 500dp) instead of match_parent
.
EDIT:
BaseActivity.java
import com.steve.database.MyDrawerLayout;
private MyDrawerLayout mDrawerLayout;
private ListView mDrawerList;
LayoutInflater mInflater = (LayoutInflater) getApplicationContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View mCustomView = mInflater.inflate(R.layout.custom_actionbar, null);
mDrawerLayout = (MyDrawerLayout)mCustomView.findViewById(R.id.drawer_layout);
mDrawerList = (ListView)mCustomView.findViewById(R.id.list_menu);