Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
13 / 15 / 5
Регистрация: 16.10.2016
Сообщений: 206
1

Приложение падает когда шапка Navigation Drawer Activity пропадает из виду

16.10.2016, 13:20. Показов 1583. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В моей программе используется Navigation Drawer Activity и в нем много пунктов меню. И поэтому как только шапка Navigation Drawer Activity пропадает из виду, приложение выдает сообщение об ошибке и закрывается. Тестирую приложение на своем телефоне android 5.1 Буду рад помощи.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.10.2016, 13:20
Ответы с готовыми решениями:

Как в Navigation Drawer Activity засунуть Activity?
Здравствуйте! у меня такая проблема navigation drawer activity работает только с фрагментами как...

Navigation drawer на многих activity
На б*длокодил от балды не смотря а может уже есть готовое решение:?) Скажите ли так вобще можно,...

Смена activity в Navigation Drawer
Буду в очередной раз оправдывать свой ник. Суть вопроса - распишите по полочкам как сменить...

Создание окон в navigation drawer activity
Ребят, всем привет. Пытаюсь создать фрагменты в navigation drawer activity, но не могу сделать...

16
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
16.10.2016, 13:25 2
без кода и лога ошибки - на форум экстрасенсов
1
13 / 15 / 5
Регистрация: 16.10.2016
Сообщений: 206
16.10.2016, 13:57  [ТС] 3
Извините, совсем забыл

Добавлено через 15 секунд
Сейчас сделаю скриншоты

Добавлено через 4 минуты
10-16 15:56:22.834 15373-15373/com.ffteam.handbook E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.ffteam.handbook, PID: 15373
java.lang.OutOfMemoryError: Failed to allocate a 92160012 byte allocation with 2097056 free bytes and 57MB until OOM
at dalvik.system.VMRuntime.newNonMovableArray(Native Method)
at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:651)
at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:486)
at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:993)
at android.content.res.Resources.loadDrawableForCookie(Resources.java:2723)
at android.content.res.Resources.loadDrawable(Resources.java:2614)
at android.content.res.Resources.getDrawable(Resources.java:900)
at android.content.Context.getDrawable(Context.java:408)
at android.support.v4.content.ContextCompatApi21.getDrawable(ContextCompatApi21.jav a:26)
at android.support.v4.content.ContextCompat.getDrawable(ContextCompat.java:344)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawable Manager.java:197)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawable Manager.java:185)
at android.support.v7.content.res.AppCompatResources.getDrawable(AppCompatResources .java:100)
at android.support.v7.view.menu.MenuItemImpl.getIcon(MenuItemImpl.java:421)
at android.support.design.internal.NavigationMenuItemView.initialize(NavigationMenu ItemView.java:113)
at android.support.design.internal.NavigationMenuPresenter$NavigationMenuAdapter.on BindViewHolder(NavigationMenuPresenter.java:415)
at android.support.design.internal.NavigationMenuPresenter$NavigationMenuAdapter.on BindViewHolder(NavigationMenuPresenter.java:338)
at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.jav a:5825)
at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java: 5858)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView. java:5094)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView. java:4970)
at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManag er.java:2029)
at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.ja va:1414)
at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1377 )
at android.support.v7.widget.LinearLayoutManager.scrollBy(LinearLayoutManager.java: 1193)
at android.support.v7.widget.LinearLayoutManager.scrollVerticallyBy(LinearLayoutMan ager.java:1043)
at android.support.v7.widget.RecyclerView.scrollByInternal(RecyclerView.java:1596)
at android.support.v7.widget.RecyclerView.onTouchEvent(RecyclerView.java:2704)
at android.view.View.dispatchTouchEvent(View.java:8601)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2513)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2157)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2519)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2171)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2519)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2171)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2519)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2171)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2519)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2171)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2519)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2171)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2519)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2171)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2519)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2171)
at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(P honeWindow.java:2491)
at

Добавлено через 15 секунд
вот код ошибки
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
16.10.2016, 14:09 4
Цитата Сообщение от Starikov Посмотреть сообщение
OutOfMemoryError: Failed to allocate a 92160012 byte allocation with 2097056 free bytes and 57MB until OOM
значит где-то огромная картинка или несколько картинок, которые не влазят в память
1
13 / 15 / 5
Регистрация: 16.10.2016
Сообщений: 206
16.10.2016, 14:18  [ТС] 5
у каждого элемента есть свой значок, я так понимаю это причина? но почему тогда ошибка именно тогда когда шапка выходит из поля зрения

Добавлено через 43 секунды
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <group android:checkableBehavior="none">
        <item android:title="Математика">
            <menu>
                <item
                    android:title="Алгебра"
                    android:id="@+id/al"
                    android:icon="@drawable/al"/>
                <item
                    android:title="Геометрия"
                    android:id="@+id/ge"
                    android:icon="@drawable/ge"/>
            </menu>
        </item>
    </group>
    <group android:checkableBehavior="none">
        <item android:title="@string/fi">
            <menu>
                <item
                    android:title="@string/si"
                    android:id="@+id/si"
                    android:icon="@drawable/si"/>
                <item
                    android:title="@string/vz_tel"
                    android:id="@+id/vz_tel"
                    android:icon="@drawable/vz_tel"/>
                <item
                    android:title="@string/davl"
                    android:id="@+id/davl"
                    android:icon="@drawable/davl"/>
                <item
                    android:title="@string/rab"
                    android:id="@+id/rab"
                    android:icon="@drawable/rab"/>
                <item
                    android:title="@string/voln"
                    android:id="@+id/voln"
                    android:icon="@drawable/voln"/>
                <item
                    android:title="@string/warm"
                    android:id="@+id/warm"
                    android:icon="@drawable/warm"/>
                <item
                    android:title="@string/electr"
                    android:id="@+id/electr"
                    android:icon="@drawable/electr"/>
                <item
                    android:title="@string/light"
                    android:id="@+id/light"
                    android:icon="@drawable/light"/>
                <item
                    android:title="@string/atom"
                    android:id="@+id/atom"
                    android:icon="@drawable/atom"/>
                <item
                    android:title="@string/spravka"
                    android:id="@+id/spravka"
                    android:icon="@drawable/spravka"/>
            </menu>
        </item>
    </group>
 
</menu>
вот код меню

Добавлено через 3 минуты
сумма всех используемых значков в меню = 235 КБ

Добавлено через 12 секунд
сумма всех используемых значков в меню = 235 КБ
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
16.10.2016, 14:26 6
код бы активити и разметку
1
13 / 15 / 5
Регистрация: 16.10.2016
Сообщений: 206
16.10.2016, 14:37  [ТС] 7
ок сейчас будет

Добавлено через 48 секунд
разметку какую? main_activity?

Добавлено через 2 минуты
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
package com.ffteam.handbook;
 
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.view.View;
import android.support.design.widget.NavigationView;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
 
public class MainActivity extends AppCompatActivity
        implements NavigationView.OnNavigationItemSelectedListener {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
 
        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                        .setAction("Action", null).show();
            }
        });
 
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
        drawer.setDrawerListener(toggle);
        toggle.syncState();
 
        NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
        navigationView.setNavigationItemSelectedListener(this);
    }
 
    @Override
    public void onBackPressed() {
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        if (drawer.isDrawerOpen(GravityCompat.START)) {
            drawer.closeDrawer(GravityCompat.START);
        } else {
            super.onBackPressed();
        }
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
 
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
 
        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }
 
        return super.onOptionsItemSelected(item);
    }
 
    @SuppressWarnings("StatementWithEmptyBody")
    @Override
    public boolean onNavigationItemSelected(MenuItem item) {
        // Handle navigation view item clicks here.
        int id = item.getItemId();
 
        if (id == R.id.al) {
 
        } else if (id == R.id.ge) {
 
        } else if (id == R.id.vz_tel) {
 
        } else if (id == R.id.davl) {
 
        } else if (id == R.id.si) {
 
        } else if (id == R.id.rab) {
 
        } else if (id == R.id.voln) {
 
        } else if (id == R.id.warm) {
 
        } else if (id == R.id.electr) {
 
        } else if (id == R.id.light) {
 
        } else if (id == R.id.atom) {
 
        } else if (id == R.id.spravka) {
 
        }
 
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        drawer.closeDrawer(GravityCompat.START);
        return true;
    }
}
вот MainActivity.java

Добавлено через 3 минуты
создавал проект сразу готовым шаблоном Navigation Drawer Activity
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
16.10.2016, 14:40 8
картинки для меню и шапки векторные?

если нет то какого размера сами картинки? в пикселях, не размер файла, а именно в пикселях
1
13 / 15 / 5
Регистрация: 16.10.2016
Сообщений: 206
16.10.2016, 14:43  [ТС] 9
картинки я скачивал с рунета

Добавлено через 20 секунд
а размер всех картинок?

Добавлено через 1 минуту
все картинки формата png, сейчас посмотрю размер
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
16.10.2016, 14:43 10
я не спрашиваю откуда они скачаны, а совсем другие наводящие вопросы
1
13 / 15 / 5
Регистрация: 16.10.2016
Сообщений: 206
16.10.2016, 14:52  [ТС] 11
самая маленькая 80 х 80, самая большая 1200 х1200

Добавлено через 22 секунды
шапка это линейный градиент

Добавлено через 1 минуту
менял размер шапки чтобы разные пункты меню попадали, но все равно при исчезновении шапки выдается ошибка

Добавлено через 2 минуты
вот код градиента шапки
XML
1
2
3
4
5
6
7
8
9
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient
        android:angle="135"
        android:centerColor="#4CAF50"
        android:endColor="#2E7D32"
        android:startColor="#81C784"
        android:type="linear" />
</shape>
а вот код самой шапки
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="@dimen/nav_header_height"
    android:background="@drawable/side_nav_bar"
    android:gravity="bottom"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:theme="@style/ThemeOverlay.AppCompat.Dark"
    android:weightSum="1">
 
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="@string/app_name"
        android:id="@+id/handbook"
        android:layout_weight="0.16" />
 
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="@string/spr"
        android:id="@+id/textView"
        android:layout_weight="0.19" />
 
</LinearLayout>
0
111 / 111 / 43
Регистрация: 24.05.2015
Сообщений: 329
16.10.2016, 14:52 12
Можно в манифесте в application прописать:
XML
1
android:largeHeap="true"
Но это не слишком хорошее решение.
1
13 / 15 / 5
Регистрация: 16.10.2016
Сообщений: 206
16.10.2016, 14:57  [ТС] 13
сейчас попробую и скажу результат

Добавлено через 2 минуты
выскакивает та же самая ошибка, ничего не изменилось. вот манифест
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.ffteam.handbook">
 
    <application
        android:largeHeap="true"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher1"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
 
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
 
</manifest>
Добавлено через 1 минуту
есть ли еще варианты решить проблему?
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
16.10.2016, 14:59 14
Лучший ответ Сообщение было отмечено Starikov как решение

Решение

картинка 1200 х1200 будет занимать в памяти больше 4 мегабайт
зачем на иконки ставить картинку такого огромного размера?
1
13 / 15 / 5
Регистрация: 16.10.2016
Сообщений: 206
16.10.2016, 15:19  [ТС] 15
забыл уменьшить, сейчас уменьшу, скажу что получилось

Добавлено через 18 минут
изменил размер всех картинок до 200 х 200, проблема осталась
вот код ошибки
java.lang.OutOfMemoryError: Failed to allocate a 92160012 byte allocation with 2097056 free bytes and 57MB until OOM
даже не изменилось количество байтов
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
16.10.2016, 15:21 16
Цитата Сообщение от Starikov Посмотреть сообщение
изменил размер всех картинок до 200 х 200
размер именно картинок или просто размеры в xml разметке?
1
13 / 15 / 5
Регистрация: 16.10.2016
Сообщений: 206
16.10.2016, 15:22  [ТС] 17
о все работает, забыл приложение удалить и заново поставить

Добавлено через 19 секунд
спасибо вам за внимание!!!
0
16.10.2016, 15:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.10.2016, 15:22
Помогаю со студенческими работами здесь

Navigation Drawer Menu: можно ли использовать activity?
В Navigation Drawer Menu используются только фрагменты или можно обычными Активитями пользоваться?...

Белая полоса внизу navigation drawer activity
Добрый день! Не могу разобраться с белой полосой в navigation drawer activity.Она появилась после...

Android Studio - Navigation Drawer Activity, многостраничное
Всем доброго времени суток) Справедливости ради, хочу сказать, что я не сразу стал создавать тему,...

Падает программа Navigation Drawer
Собрал пример этот бокового меню...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru