Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Nenyo
0 / 0 / 0
Регистрация: 13.07.2018
Сообщений: 4
1

On a null object reference

20.07.2018, 19:10. Просмотров 688. Ответов 7

Добрый день! Помогите решить проблему.
Ошибка:
java.lang.NullPointerException: Attempt to invoke virtual method 'void com.gnegno.horoscope.FragmentFirst.sendData(java.lang.String)' on a null object reference
at com.gnegno.horoscope.startActivity.onNavigationItemSelected(startActivity.java:118) (здесь 19 строка)

Понимаю, что куда то надо переставить строки, но не пойму куда.
Для тех кто подумает, что String S = (String) getMapLastIntent().get("taurus") - null, это не так. В другом месте этой же активности всё норм. И проверено при String S = (String) ="taurus"; та же ошибка.

В строках 23-27 видимо та же проблема, метод передачи другой ,через интенты, без ошибки работает, но просто не передает ничего.

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
    @SuppressWarnings("StatementWithEmptyBody")
    @Override
    public boolean onNavigationItemSelected(MenuItem item) {
 
        // Создадим новый фрагмент
        Fragment fragment = null;
        Class fragmentClass = null;
 
        // Handle navigation view item clicks here.
        int id = item.getItemId();
 
        switch (id) {
            case R.id.nav_camera:
                FragmentFirst fragment1 = (FragmentFirst)getSupportFragmentManager()
                        .findFragmentById(R.id.container);
 
                fragmentClass = FragmentFirst.class;
                String S1 = (String) getMapLastIntent().get("taurus");
                fragment1.sendData(S1);
 
                break;
            case R.id.nav_gallery:
                /*String S = (String) getMapLastIntent().get("taurus");*/
                String S = "taurus";
                Intent intent = new Intent();
                intent.putExtra("taurus", S);
                getApplicationContext().sendBroadcast(intent);
 
                fragmentClass = FragmentSecond.class;
                break;
            case R.id.nav_slideshow:
 
                break;
            case R.id.nav_manage:
 
                break;
            case R.id.nav_share:
 
                break;
        }
 
        try {
            assert fragmentClass != null;
            fragment = (Fragment) fragmentClass.newInstance();
 
        } catch (Exception e) {
            e.printStackTrace();
        }
 
        // Вставляем фрагмент, заменяя текущий фрагмент
        FragmentManager fragmentManager = getSupportFragmentManager();
 
        fragmentManager.beginTransaction().replace(R.id.container, fragment).commit();
 
        // Выделяем выбранный пункт меню в шторке
        item.setChecked(true);
        // Выводим выбранный пункт в заголовке
        setTitle(item.getTitle());
 
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        drawer.closeDrawer(GravityCompat.START);
 
        return true;
    }
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.07.2018, 19:10
Ответы с готовыми решениями:

Ошибка on a null object reference
Появляется ошибка java.lang.NullPointerException: Attempt to invoke virtual method...

Ошибка Attempt to invoke virtual metho (.) on a null object reference
Пробую добавить анимацию кнопки, при компиляции выдает ошибку "Attempt to invoke virtual method...

Ошибка Attempt to invoke virtual method on a null object reference
Здравствуйте, создаю приложение, которое работает с firebase. При отправке сообщения приложение...

Ошибка Attempt to invoke virtual method on a null object reference
Выдает ошибку. Никак не могу понять в чем проблема. Помогите плиз. Лог ошибки: Caused by:...

При нажатии на кнопку выходит ошибка "Attempting to invoke method on a null object reference"
Доброго дня! Есть вот этот код. При нажатии на кнопку Add выдает Attempting to invoke interface...

7
+1
324 / 157 / 53
Регистрация: 24.08.2010
Сообщений: 1,028
20.07.2018, 21:18 2
(String) - это что?
.toString()
0
Nenyo
0 / 0 / 0
Регистрация: 13.07.2018
Сообщений: 4
21.07.2018, 17:47  [ТС] 3
Так преобразует android studio. И читайте внимательно, String S = (String) getMapLastIntent().get("taurus") имеет ненулевое значение, это правильная запись.
0
ExFau$t
762 / 629 / 156
Регистрация: 08.05.2012
Сообщений: 3,064
21.07.2018, 19:53 4
Java
1
String.valueOf(getMapLastIntent().get("taurus"))

Не по теме:

В чём прикол шлёпать буковки на авось, не понимая, что произойдёт?

0
21.07.2018, 19:53
Nenyo
0 / 0 / 0
Регистрация: 13.07.2018
Сообщений: 4
21.07.2018, 20:33  [ТС] 5
Нет, ваше предложение неверное. Такую запись я встречал. Она ничем не отличается от моей String S = (String) getMapLastIntent().get("taurus")

Прочтите полностью мой вопрос со всеми буковками. String S = (String) getMapLastIntent().get("taurus") к которой вы и другие придираетесь РАБОТАЕТ. Почему? Да потому что в этой же активности при её создании данная запись передает данные.
Проблему надо искать в расположении записи.

Добавлено через 6 минут
Для тех кто столкнулся с такой же проблемой. Объясняю данную ошибку только в контексте передачи данных в фрагмент из основной активити при нажатии кнопок меню.
Вне зависимости от выбранного вами способа передачи вы должны передавать данные ТОЛЬКО ПОСЛЕ СОЗДАНИЯ ФРАГМЕНТА.
Т.е. в моём случае в строку 45 после fragment = (Fragment) fragmentClass.newInstance();
До этого момента происходит присвоение fragmentClass выбранного фрагмента, например fragmentClass = FragmentFirst.class;
Но до "try" создания фрагмента ещё не было - fragment = null.
0
ExFau$t
762 / 629 / 156
Регистрация: 08.05.2012
Сообщений: 3,064
21.07.2018, 20:58 6
Для тех, кто столкнулся с такой же проблемой, данные во фрагмент передать лучше и проще всего через newInstance() фрагмента, откуда в самом фрагменте подхватывать и использовать их, например, засеттить переменные в onCreate.
0
demixdn
23.07.2018, 11:03
  #7

Не по теме:

Цитата Сообщение от ExFau$t Посмотреть сообщение
данные во фрагмент передать лучше и проще всего через newInstance() фрагмента
ТС инициализирует фрагмент через создание инстанса класса
Java
1
2
3
Class fragmentClass = null;
fragmentClass = FragmentFirst.class;
fragment = (Fragment) fragmentClass.newInstance();
так что он никак не могут передать данные в newInstance.
где они только этого нахватались?? не в первый раз уже вижу такое

0
ExFau$t
762 / 629 / 156
Регистрация: 08.05.2012
Сообщений: 3,064
23.07.2018, 11:27 8
Я имел в виду именно "newInstance() фрагмента", что-то вроде такого:
Java
1
2
3
4
5
6
7
8
public static SomeFragment newInstance(int id, String title) {
        SomeFragment fragment = new SomeFragment ();
        Bundle args = new Bundle();
        args.putInt(ARG_ID, id);
        args.putString(ARG_TITLE, title);
        fragment.setArguments(args);
        return fragment;
}
0
23.07.2018, 11:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.07.2018, 11:27

Вызов функции и NULL reference
Итак, в MainActivity описана следующая функция setuFeed(): public class MainActivity extends...

Программа не выполняет условие (fileInput != null) и выдает Object reference not set to instance of an object
Доброго времени суток, форумчане! Помогите бедному студенту решить вот такую проблему: Программа...

Cannot access a property or method of a null object reference
TanaTiX, огромное спасибо! Но есть ещё один вопрос var js = "window.ret = function(){return 1;}";...


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

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

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