美好的一天,你能帮助我吗?在模拟器上编译/运行我的代码时出现此错误。这是我过去的示例教程。我使用了最小的Target API - 15并编译了最新的gradle
'com.android.support:design:23.0.0'
http://www.android4devs.com/2015/06/navigation-view-material-design-support.html
代码错误:
AndroidRuntime:java.lang.RuntimeException:无法启动活动ComponentInfo {com.eccp.projects.ecosavers.ecosavers / com.eccp.projects.ecosavers.ecosavers.activities.MainActivity}:android.view.InflateException :二进制XML文件行#29:二进制XML文件行#29:错误膨胀类android.support.design.widget.NavigationView 12-29 06:43:39.409 3448-3448 / com.eccp.projects.ecosavers.ecosavers E / AndroidRuntime:at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)<< em>
E / AndroidRuntime:引起:android.view.InflateException:二进制XML文件行#29:二进制XML文件行#29:错误膨胀类android.support.design.widget.NavigationView < / p>以下是我的代码:MainActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//SET my own toolbar
toolbar = (Toolbar) findViewById(R.id.tool_bar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
mNavigationView = (NavigationView) findViewById(R.id.navigation_view);
mNavigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
if (menuItem.isChecked()) menuItem.setChecked(false);
else menuItem.setChecked(true);
//Closing drawer on item click
mDrawerlayout.closeDrawers();
//Check to see which item was being clicked and perform appropriate action
switch (menuItem.getItemId()) {
//Replacing the main content with ContentFragment Which is our Inbox View;
case R.id.events:
Toast.makeText(getApplicationContext(), "Inbox Selected", Toast.LENGTH_SHORT).show();
Eco_events fragment = new Eco_events();
android.support.v4.app.FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.frame, fragment);
fragmentTransaction.commit();
return true;
// show a toast on click
case R.id.activities:
Toast.makeText(getApplicationContext(), "Send Selected", Toast.LENGTH_SHORT).show();
return true;
case R.id.spam:
Toast.makeText(getApplicationContext(), "Spam Selected", Toast.LENGTH_SHORT).show();
return true;
default:
Toast.makeText(getApplicationContext(), "Somethings Wrong", Toast.LENGTH_SHORT).show();
return true;
}
}
});
// Initializing Drawer Layout and ActionBarToggle
mDrawerlayout = (DrawerLayout) findViewById(R.id.drawer);
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerlayout, toolbar, R.string.drawerOpened, R.string.drawerOpened) {
@Override
public void onDrawerClosed(View drawerView) {
// Code here will be triggered once the drawer closes as we dont want anything to happen so we leave this blank
super.onDrawerClosed(drawerView);
}
@Override
public void onDrawerOpened(View drawerView) {
// Code here will be triggered once the drawer open as we dont want anything to happen so we leave this blank
super.onDrawerOpened(drawerView);
}
};
//Setting the actionbarToggle to drawer layout
mDrawerlayout.setDrawerListener(mDrawerToggle);
//calling sync state is
mDrawerToggle.syncState();
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
return super.onOptionsItemSelected(item);
}
XML:activity_main.xml
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context=".MainActivity">
<LinearLayout
android:layout_height="match_parent"
android:layout_width="match_parent"
android:orientation="vertical"
>
<include
android:id="@+id/tool_bar"
layout="@layout/toolbar"
/>
<FrameLayout
android:id="@+id/frame"
android:layout_width="match_parent"
android:layout_height="match_parent">
</FrameLayout>
</LinearLayout>
<android.support.design.widget.NavigationView
android:id="@+id/navigation_view"
android:layout_height="match_parent"
android:layout_width="wrap_content"
android:layout_gravity="start"
app:headerLayout="@layout/header"
app:menu="@menu/drawer"
/> </android.support.v4.widget.DrawerLayout>
答案 0 :(得分:21)
请按照以下步骤操作:
答案 1 :(得分:3)
感谢您的关注,我很感激。我终于找到了(我)这个问题的答案。
错误膨胀类android.support.design.widget.NavigationView#28或#29
对我有用的解决方案是,您必须与support design library
和支持AppCompat Library
相匹配。在gradle模块中,
更改gradle版本(您想要的库号)您也可以在我给出的链接中找到最新的gradle构建,但我建议您检查您的gradle模块(第2张图片,因为它们是第一次更新gradle构建。然后在我的gradle模块中 - compile: ...
已突出显示,这意味着有一个更新的版本,只需更改编号,例如24.0.0
编译,如果它是稳定的,而不是预览),平均值我的时间是23.1.1
。
- &GT; more gradle lib- gradleplease.appspot.com
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:design:23.1.1'
:)它对我有用!
观察(对我而言,当我更改/解决此错误时,值为23.x.x
):如果您的support-design
与AppCompat-lib
不匹配,则生成#28 如果您的AppCompat
与support-design
生成#29 不匹配。试试吧,也许我会交换#。
答案 2 :(得分:0)
您收到此错误是因为您需要设计支持库。
打开SDK Manager并下载Android Support Repository,而不是在这里找到该库的最新版本:
<android-sdk>/extras/android/m2repository/com/android/support/design/23.0.1/design-23.0.1.aar
将其复制到libs目录中,然后将依赖项添加到build.gradle:
repositories {
flatDir {
dirs 'libs'
}
}
dependencies {
compile 'android.support.design:design:23.0.1@aar'
}