#android #android-layout #android-fragments #android-manifest #android-navigationview
#Android #android-макет #android-фрагменты #android-манифест #android-navigationview
Вопрос:
После запуска моего приложения в версиях 5.0 оно работает нормально. но для более низкой версии это выдает мне ошибки и не открывается.
Это ошибка, которую я получаю:
Не удается запустить activity ComponentInfo{lk.myoffers.app.myofferslk/lk.myoffers.app.myofferslk.MainActivity}: android.view.Исключение InflateException: строка двоичного XML-файла # 17: ошибка раздувания класса android.support.design.widget.NavigationView
- Вызвано: android.view.Исключение InflateException: строка двоичного XML-файла # 17: ошибка раздувания класса android.support.design.widget.NavigationView
- Вызвано: java.lang.reflect.Исключение InvocationTargetException
- Вызвано: android.content.res.Resources $ NotFoundException: идентификатор ресурса # 0x7f020052
- в lk.myoffers.app.myofferslk.MainActivity.onCreate(MainActivity.java:84)
Я перепробовал все, что связано с переполнением стека, но проблема все еще остается.
Я новичок в Android, так в чем может быть проблема?
setContentView(R.layout.activity_main);
находится в строке 84.
public class MainActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener{
public static int pageCount = 1;
private int totalLoadedCount;
private AdListAdapter adapter;
TextView txtUserName;
Button btnReconnect;
private static String LIST_INSTANCE_STATE = "items";
private ArrayList<AdList> adLists = new ArrayList<AdList>();
private ArrayList<MasterCategory> mstCategory = new ArrayList<MasterCategory>();
private MasterCategoryAdapter catAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
totalLoadedCount = 0;
My activity_main:
<?xml version="1.0" encoding="utf-8"?>
<include
layout="@layout/app_bar_main"
android:id="@ id/aa"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<android.support.design.widget.NavigationView
android:id="@ id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header_main"
app:menu="@menu/activity_main_drawer"
/>
Мой файл манифеста Android:
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme1"
android:configChanges="orientation|keyboardHidden|screenSize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
and for the style.xml i have following code lines
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<style name="AppTheme1" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:button">@color/colorButton</item>
</style>
<style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">#673AB7</item>
<item name="colorPrimaryDark">#512DA8</item>
<item name="colorAccent">#00BCD4</item>
</style>
<style name="MIP_theme" parent="AppTheme">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
Я перепробовал все, но оно не работает на Android ниже 5
Установлена версия Gradle
compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.android.support:design:23.4.0'
Минимальная версия — 23.
Вот мой build.gradle
android {
compileSdkVersion 23
buildToolsVersion "24.0.1"
defaultConfig {
applicationId "lk.myoffers.app.myofferslk"
minSdkVersion 14
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.android.support:design:23.4.0'
compile 'com.loopj.android:android-async-http:1.4.9'
compile 'com.github.darsh2:MultipleImageSelect:v0.0.4'
compile 'com.loopj.android:android-async-http:1.4.9'
compile 'com.android.volley:volley:1.0.0'
compile 'com.squareup.picasso:picasso:2.5.2'
compile 'com.android.support:cardview-v7:23.4.0'
compile 'com.android.support:recyclerview-v7:23.4.0'
}
Комментарии:
1. Значения-v21 style.xml имеет <имя стиля=»AppTheme. NoActionBar»> <имя элемента =»windowActionBar»> false</ item> <имя элемента =»windowNoTitle»> true </item> <имя элемента =»android: windowDrawsSystemBarBackgrounds»> true </item> <имя элемента =»android: statusBarColor»> @android: цветной / прозрачный</item> </style>
2. Пожалуйста, убедитесь, что вы не публикуете «реальные» значения API_KEY и т. Д.!
3. Спасибо.. это находится в стадии тестирования.. большое спасибо, что указали на это.
4. Что произойдет, если вы не используете заголовок навигации?
5. как только я удалю приложение: menu=»@menu / activity_main_drawer» из режима навигации, оно работает нормально. проблема возникает оттуда. удалив заголовок, который не работает, но удалив меню ящика, оно работает. в чем может быть проблема в «app:menu=»@menu / activity_main_drawer»»
Ответ №1:
Наконец, после многих дней и после выполнения многих отладок благодаря #0X0nosugar я проверил navigationview, удалив
- приложение:headerLayout=»@layout/nav_header_main»
- приложение:menu=»@menu/activity_main_drawer
эти две строки отдельно и проверяют монитор Android на наличие ошибок
<android.support.design.widget.NavigationView
android:id="@ id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header_main"
app:menu="@menu/activity_main_drawer"
/>
удаление приложения: headerLayout=»@layout/nav_header_main» не вносит никаких изменений, выдает мне ту же ошибку
Но после удаления приложения: menu =»@menu /activity_main_drawer» приложение работает нормально и загружает левую навигацию без пункта меню. итак, как вы можете видеть в моем списке ошибок, в нем указано, что вызвано: android.content.res.Resources $ NotFoundException: Идентификатор ресурса # 0x7f020052
Поэтому я проверил, удалив пользовательские векторные значки в пункте меню, который я разместил в своем activity_main_drawer в res->menu. Теперь он работает нормально. проблема с одним
<item
android:id="@ id/ic_menu_logout"
android:icon="@drawable/change_this_icon_with_default_icon_comes_in_android"
android:title="Logout"
/>
<item
теперь он работает нормально.. Все, кто сталкивается с этой проблемой, проверяют вашу консоль. если на нем написано «ResourceNotFoundException», эта ошибка раздувает класс android.support.design.widget.NavigationView, вероятно, появляется из одного значка меню..
Наконец-то у меня это работает! Спасибо всем за вашу огромную поддержку
Комментарии:
1. Замечательный ответ. Я хотел бы добавить, если вы скопировали свои значки для рисования из другого проекта, прежде чем писать меню ящика, просто удалите их и скопируйте снова. Этот ответ сэкономил мне часы. Человек, приходи на кофе! Ты брат!