Приложение для Android не работает в версии 4.0, но работает с 5 ошибками класса android.support.design.widget.NavigationView

#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

  1. Вызвано: android.view.Исключение InflateException: строка двоичного XML-файла # 17: ошибка раздувания класса android.support.design.widget.NavigationView
  2. Вызвано: java.lang.reflect.Исключение InvocationTargetException
  3. Вызвано: android.content.res.Resources $ NotFoundException: идентификатор ресурса # 0x7f020052
  4. в 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. Замечательный ответ. Я хотел бы добавить, если вы скопировали свои значки для рисования из другого проекта, прежде чем писать меню ящика, просто удалите их и скопируйте снова. Этот ответ сэкономил мне часы. Человек, приходи на кофе! Ты брат!