Форум программистов, компьютерный форум, киберфорум
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Starikov
7 / 9 / 2
Регистрация: 16.10.2016
Сообщений: 145
#1

Найти ошибку в коде - Программирование Android

22.12.2016, 19:32. Просмотров 261. Ответов 9
Метки нет (Все метки)

У меня есть приложение в котором я открываю фрагменты из navigation drawer и 3 фрагмента пустые в одном я добавил list view и после этого когда я в navigation drawer нажимаю на тот элемент в котором list view у меня вылетает ошибка.
Вот исходные коды, помогите пожалуйста

MainActivity.java
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
package com.starikov.assistant;
 
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v7.app.AppCompatActivity;
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.widget.Toolbar;
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);
 
 
        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.addDrawerListener(toggle);
        drawer.openDrawer(GravityCompat.START);
        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();
        }
    }
 
 
    @SuppressWarnings("StatementWithEmptyBody")
    @Override
 
    public boolean onNavigationItemSelected(MenuItem item) {
 
        Fragment fragment = null;
        Class fragmentClass = null;
 
        int id = item.getItemId();
 
        if (id == R.id.algebra) {
            fragmentClass = AlgebraFragment.class;
        } else if (id == R.id.geometry) {
            fragmentClass = GeometryFragment.class;
        } else if (id == R.id.physics) {
            fragmentClass = PhysicalFragment.class;
        } else if (id == R.id.himical) {
            fragmentClass = HimicalFragment.class;
        }
 
        try {
            fragment = (Fragment) fragmentClass.newInstance();
        } catch (Exception e) {
            e.printStackTrace();
        }
 
        FragmentManager manager = getSupportFragmentManager();
        manager.beginTransaction().replace(R.id.container, fragment).commit();
 
        item.setChecked(false);
 
        setTitle(item.getTitle());
 
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        drawer.closeDrawer(GravityCompat.START);
        return true;
    }
}
Fragment в котором list view

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
package com.starikov.assistant;
 
import android.app.ListFragment;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
 
public class HimicalFragment extends ListFragment{
 
    String tems[] = new String[] {
            "Относительная масса атома. Массовая доля",
            "Количество вещества",
            "Масса, объем и плотность вещества",
            "Растворы",
            "Электролитическая диссоциация",
            "Водородный показатель",
            "Смеси",
            "Примеси",
            "Практический выход вещества",
            "Радиоактивность",
            "Химическая кинетика"
    };
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        ArrayAdapter<String> adapter = new ArrayAdapter<>(getActivity(),
                android.R.layout.simple_list_item_1, tems);
        setListAdapter(adapter);
        return inflater.inflate(R.layout.physical_fragment, null);
    }
 
    public void onListItemClick(ListView l, View v, int position, long id) {
        super.onListItemClick(l, v, position, id);
        Toast.makeText(getActivity(), "position = " + position, Toast.LENGTH_SHORT).show();
    }
}
логи ошибки

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
12-22 21:31:32.310 7600-7600/com.starikov.assistant E/AndroidRuntime: FATAL EXCEPTION: main
                                                                      Process: com.starikov.assistant, PID: 7600
                                                                      java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Class java.lang.Object.getClass()' on a null object reference
                                                                          at android.support.v4.app.BackStackRecord.doAddOp(BackStackRecord.java:431)
                                                                          at android.support.v4.app.BackStackRecord.replace(BackStackRecord.java:481)
                                                                          at android.support.v4.app.BackStackRecord.replace(BackStackRecord.java:472)
                                                                          at com.starikov.assistant.MainActivity.onNavigationItemSelected(MainActivity.java:77)
                                                                          at android.support.design.widget.NavigationView$1.onMenuItemSelected(NavigationView.java:153)
                                                                          at android.support.v7.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:810)
                                                                          at android.support.v7.view.menu.SubMenuBuilder.dispatchMenuItemSelected(SubMenuBuilder.java:85)
                                                                          at android.support.v7.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:152)
                                                                          at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:957)
                                                                          at android.support.design.internal.NavigationMenuPresenter$1.onClick(NavigationMenuPresenter.java:328)
                                                                          at android.view.View.performClick(View.java:4856)
                                                                          at android.view.View$PerformClick.run(View.java:20268)
                                                                          at android.os.Handler.handleCallback(Handler.java:815)
                                                                          at android.os.Handler.dispatchMessage(Handler.java:104)
                                                                          at android.os.Looper.loop(Looper.java:194)
                                                                          at android.app.ActivityThread.main(ActivityThread.java:5624)
                                                                          at java.lang.reflect.Method.invoke(Native Method)
                                                                          at java.lang.reflect.Method.invoke(Method.java:372)
                                                                          at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:959)
                                                                          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.12.2016, 19:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти ошибку в коде (Программирование Android):

Не могу найти ошибку в коде для apk приложения - Программирование Android
Начал изучать Java и написание под Андроид. Eclipse с модулем имеется. Простая программка: ToggleButton, от состояния которого меняется...

Не могу найти ошибку в программном коде Eclipse, Android - Программирование Android
Кто может помочь найти ошибку в программном коде нужно чтобы программа из вектора &quot;по координатам a,d и c,b&quot; вывела расстояние &quot;h&quot; также и...

Первая программа под Android в Netbeans - найти ошибку в коде - Программирование Android
Всем привет! Ребята, установил эмулятор Android для NetBeans, создал проект, но он создался с ошибками. import android.R; import...

Не могу найти недочет в коде SQL - Программирование Android
делаю фильтр записей в sql таблице по 4 строкам, если забивать поиск последовательно, т.е. сначала первый эдит, второй и тд то все работает...

Найти ошибку - Программирование Android
package start.project123; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import...

Не могу найти ошибку - Программирование Android
Выдает ошибку (unfortunately,*** has stopped) нз что делать вот логи 07-16 09:37:50.620: W/Resources(925): Converting to string:...

9
Pablito
2525 / 2004 / 624
Регистрация: 12.05.2014
Сообщений: 7,030
Завершенные тесты: 1
22.12.2016, 19:37 #2
что в файле где описываются элементы для дровера?
в папке menu который
0
MonStar
20 / 20 / 3
Регистрация: 10.04.2011
Сообщений: 225
23.12.2016, 12:19 #3
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Class java.lang.Object.getClass()' on a null object reference
Уточните, какой из ваших объектов Null? Из логов не понятно
0
Starikov
7 / 9 / 2
Регистрация: 16.10.2016
Сообщений: 145
23.12.2016, 14:20  [ТС] #4
посмотрите в коде я все файлы нужные прислал, там должно быть видно, если что говорите какой именно нужно файл прислать

Добавлено через 1 минуту
Файл в папке меню для дровера
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
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
 
    <item android:title="@string/subjects">
        <menu>
            <item
                android:id="@+id/algebra"
                android:icon="@drawable/al"
                android:title="@string/algebra"/>
            <item
                android:id="@+id/geometry"
                android:icon="@drawable/ge"
                android:title="@string/geometry" />
            <item
                android:id="@+id/physics"
                android:icon="@drawable/atom"
                android:title="@string/physics" />
            <item
                android:id="@+id/himical"
                android:icon="@drawable/himical"
                android:title="@string/himical" />
        </menu>
    </item>
 
</menu>
Добавлено через 19 секунд
вот Паблито
0
demixdn
232 / 179 / 56
Регистрация: 31.10.2016
Сообщений: 406
23.12.2016, 14:58 #5
Цитата Сообщение от Starikov Посмотреть сообщение
Class fragmentClass = null;
Цитата Сообщение от Starikov Посмотреть сообщение
fragmentClass = HimicalFragment.class;
Цитата Сообщение от Starikov Посмотреть сообщение
fragment = (Fragment) fragmentClass.newInstance();
кто вас так научил создавать фрагменты???
0
Starikov
7 / 9 / 2
Регистрация: 16.10.2016
Сообщений: 145
23.12.2016, 15:04  [ТС] #6
Хорошо как предложите правильно сделать? (То как у меня сделано взято отсюда developer.alexanderklimov.ru/android/navigation_drawer_activity.php)
0
demixdn
232 / 179 / 56
Регистрация: 31.10.2016
Сообщений: 406
23.12.2016, 15:13 #7
Java
1
2
3
4
5
6
7
Fragment fragment = null;
if (id == R.id.nav_camera) {
      fragment = CameraFragment.newInstance();
} else if (id == R.id.nav_gallery) {
      fragment = GalleryFragment.newInstance();
}
getSupportFragmentManager().beginTransaction().replace(R.id.container_current, fragment).commit();
0
Starikov
7 / 9 / 2
Регистрация: 16.10.2016
Сообщений: 145
23.12.2016, 15:16  [ТС] #8
выдает ошибку cannot resolve symvol 'newInstance();'
0
demixdn
232 / 179 / 56
Регистрация: 31.10.2016
Сообщений: 406
23.12.2016, 15:21 #9
в каждом фрагменте нужно создать этот метод.
Java
1
2
3
4
5
6
public static CameraFragment newInstance() {
    CameraFragment fragment = new CameraFragment();
    Bundle args = new Bundle();
    fragment.setArguments(args);
    return fragment;
}
потом в args можно будет передавать параметры, которые тебе нужны. Например массив строк или что-нибудь еще.
И в onCreate фрагмента извлекать эти параметры.
0
Starikov
7 / 9 / 2
Регистрация: 16.10.2016
Сообщений: 145
25.12.2016, 12:13  [ТС] #10
дайте полный код программы открывающей Фрагменты из NAVIGATION DRAWER ACTIVITY
0
25.12.2016, 12:13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.12.2016, 12:13
Привет! Вот еще темы с ответами:

не могу найти ошибку! - Программирование Android
вот уже довольно длинный промежуток времени пытаюсь исправить работу приложения...ничего не получается...помогите пожалуйста,если не...

не могу найти ошибку - Программирование Android
я пытаюсь запустить звуковой файл в приложении, при открытии новой страницы(layout)... вот мой код: package by.example.goder; ...

Не могу найти ошибку - Программирование Android
Здравствуйте! Помогите, пожалуйста, найти ошибку в коде: вот QuizGameActivity.java: package com.androidbook.triviaquiz; ...

НЕ могу найти ошибку! - Программирование Android
Вот скрин кода: на экране два текста &quot;ДАТА&quot; и &quot;ВРЕМЯ&quot; по нажатию на &quot;дата&quot; должен выходить диалог &quot;ДАТЫ&quot;, а выходит диалог времени т.е жму...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru