Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
4 / 4 / 0
Регистрация: 16.12.2015
Сообщений: 140

Ошибка с Toast

24.08.2017, 13:10. Показов 980. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Java
1
2
3
4
5
public void makeToast(String text){
 
        Toast.makeText(GameActivity.this, text, Toast.LENGTH_SHORT).show();
 
    }
Вызываю тост через метод, как показано выше. Компилируется нормально, но при вызове все крашится и выдает:

java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources android.content.Context.getResources()' on a null object reference

Пока не знаю что делать. Тоже самое происходит и с AlertDialog.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.08.2017, 13:10
Ответы с готовыми решениями:

Метод makeText в Toast - ошибка
Здравствуйте, помогите плз, новичку. В строке 81 - Toast.makeText(this, "Нажата кнорка Ok",Toast.LENGTH_LONG).show(); ...

Ошибка метода makeText в Toast (AIDE)
Здравствуйте. Редактирую код в AIDE на Android-смартфоне. Выскакивает вот такая ошибка: Вот сам код: package...

Ошибка вывода переменной через toast
Приветствую, я пишу математическое приложение на Java. Непосредственно сейчас в программе существует проблема, которая как не даёт...

10
66 / 56 / 6
Регистрация: 28.12.2011
Сообщений: 322
24.08.2017, 13:26
В каком классе находится метод makeToast? Покажите его полностью.
0
4 / 4 / 0
Регистрация: 16.12.2015
Сообщений: 140
24.08.2017, 13:36  [ТС]
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
package com.mgames.tictactoe.tictactoe;
 
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;
 
public class GameActivity extends AppCompatActivity implements View.OnClickListener{
 
    ImageView cell_1, cell_2, cell_3, cell_4, cell_5, cell_6, cell_7, cell_8, cell_9;
    GameBrain gameBrain;
 
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_game);
 
        gameBrain = new GameBrain();
 
        cell_1 = (ImageView) findViewById(R.id.cell_1);
        cell_2 = (ImageView) findViewById(R.id.cell_2);
        cell_3 = (ImageView) findViewById(R.id.cell_3);
        cell_4 = (ImageView) findViewById(R.id.cell_4);
        cell_5 = (ImageView) findViewById(R.id.cell_5);
        cell_6 = (ImageView) findViewById(R.id.cell_6);
        cell_7 = (ImageView) findViewById(R.id.cell_7);
        cell_8 = (ImageView) findViewById(R.id.cell_8);
        cell_9 = (ImageView) findViewById(R.id.cell_9);
 
        cell_1.setOnClickListener(this);
        cell_2.setOnClickListener(this);
        cell_3.setOnClickListener(this);
        cell_4.setOnClickListener(this);
        cell_5.setOnClickListener(this);
        cell_6.setOnClickListener(this);
        cell_7.setOnClickListener(this);
        cell_8.setOnClickListener(this);
        cell_9.setOnClickListener(this);
 
    }
 
    @Override
    public void onClick(View view) {
        switch(view.getId()){
 
            case R.id.cell_1:
                gameBrain.move(cell_1,0,1);
                break;
            case R.id.cell_2:
                gameBrain.move(cell_2,1,2);
                break;
            case R.id.cell_3:
                gameBrain.move(cell_3,2,3);
                break;
            case R.id.cell_4:
                gameBrain.move(cell_4,3,4);
                break;
            case R.id.cell_5:
                gameBrain.move(cell_5,4,5);
                break;
            case R.id.cell_6:
                gameBrain.move(cell_6,5,6);
                break;
            case R.id.cell_7:
                gameBrain.move(cell_7,6,7);
                break;
            case R.id.cell_8:
                gameBrain.move(cell_8,7,8);
                break;
            case R.id.cell_9:
                gameBrain.move(cell_9,8,9);
                break;
 
        }
    }
    public void alertDialog(String XO){
 
        switch (XO){
 
            case "X":
                makeToast("X' win!");
                break;
            case "O":
                makeToast("O' win!");
                break;
 
        }
    }
 
    public void makeToast(String text){
 
        Toast.makeText(GameActivity.this, text, Toast.LENGTH_SHORT).show();
 
    }
 
}
Добавлено через 9 минут
Вот
0
66 / 56 / 6
Регистрация: 28.12.2011
Сообщений: 322
24.08.2017, 13:40
Откуда ты вызываешь эти методы?
0
4 / 4 / 0
Регистрация: 16.12.2015
Сообщений: 140
24.08.2017, 13:42  [ТС]
Метод(с не подходящим названием) AlertDialog вызывается из другого класса

Добавлено через 46 секунд
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    public static void win(String XO){
 
        switch (XO){
            case "X":
                the_winner = true;
                System.out.println("X's win!");
                gameActivity.alertDialog("X");
                break;
            case "O":
                the_winner = true;
                System.out.println("O's win!");
                gameActivity.alertDialog("O");
                break;
        }
 
    }
 
}
0
66 / 56 / 6
Регистрация: 28.12.2011
Сообщений: 322
24.08.2017, 13:43
Показывай класс полностью!

Что такое gameActivity?
0
4 / 4 / 0
Регистрация: 16.12.2015
Сообщений: 140
24.08.2017, 13:47  [ТС]
Первый класс я скинул в начале(он и называется GameActivity)

Добавлено через 1 минуту
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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
package com.mgames.tictactoe.tictactoe;
 
import android.widget.ImageView;
import android.widget.Toast;
 
/**
 * Created by zero on 22.08.17.
 */
 
public class GameBrain{
 
 
    public static String[] field = new String[9];
    public static String XO_move = "X";
 
    private static boolean the_winner = false;
 
    public static GameActivity gameActivity = new GameActivity();
 
    public void move(ImageView cell, int n, int mainN) {
        if(the_winner == false){
            if(field[n] == null){
                field[n] = XO_move;
 
                switch (mainN){
                    case 1:
                        if(XO_move.equals("X")){
                            cell.setImageResource(R.drawable.cell_cross);
                            XO_move = "O";
                        } else if(XO_move.equals("O")){
                            cell.setImageResource(R.drawable.cell_zero);
                            XO_move = "X";
                        }
                        break;
 
                    case 2:
                        if(XO_move.equals("X")){
                            cell.setImageResource(R.drawable.cell_cross);
                            XO_move = "O";
                        } else if(XO_move.equals("O")){
                            cell.setImageResource(R.drawable.cell_zero);
                            XO_move = "X";
                        }
                        break;
 
                    case 3:
                        if(XO_move.equals("X")){
                            cell.setImageResource(R.drawable.cell_cross);
                            XO_move = "O";
                        } else if(XO_move.equals("O")){
                            cell.setImageResource(R.drawable.cell_zero);
                            XO_move = "X";
                        }
                        break;
 
                    case 4:
                        if(XO_move.equals("X")){
                            cell.setImageResource(R.drawable.cell_cross);
                            XO_move = "O";
                        } else if(XO_move.equals("O")){
                            cell.setImageResource(R.drawable.cell_zero);
                            XO_move = "X";
                        }
                        break;
 
                    case 5:
                        if(XO_move.equals("X")){
                            cell.setImageResource(R.drawable.cell_cross);
                            XO_move = "O";
                        } else if(XO_move.equals("O")){
                            cell.setImageResource(R.drawable.cell_zero);
                            XO_move = "X";
                        }
                        break;
 
                    case 6:
                        if(XO_move.equals("X")){
                            cell.setImageResource(R.drawable.cell_cross);
                            XO_move = "O";
                        } else if(XO_move.equals("O")){
                            cell.setImageResource(R.drawable.cell_zero);
                            XO_move = "X";
                        }
                        break;
 
 
                    case 7:
                        if(XO_move.equals("X")){
                            cell.setImageResource(R.drawable.cell_cross);
                            XO_move = "O";
                        } else if(XO_move.equals("O")){
                            cell.setImageResource(R.drawable.cell_zero);
                            XO_move = "X";
                        }
                        break;
 
 
                    case 8:
                        if(XO_move.equals("X")){
                            cell.setImageResource(R.drawable.cell_cross);
                            XO_move = "O";
                        } else if(XO_move.equals("O")){
                            cell.setImageResource(R.drawable.cell_zero);
                            XO_move = "X";
                        }
                        break;
 
                    case 9:
                        if(XO_move.equals("X")){
                            cell.setImageResource(R.drawable.cell_cross);
                            XO_move = "O";
                        } else if(XO_move.equals("O")){
                            cell.setImageResource(R.drawable.cell_zero);
                            XO_move = "X";
                        }
                        break;
                }
 
                check();
                System.out.println(field[0]+"|"+field[1]+"|"+field[2]);
                System.out.println(field[3]+"|"+field[4]+"|"+field[5]);
                System.out.println(field[6]+"|"+field[7]+"|"+field[8]);
 
            }
        }
    }
 
    public static void check(){
 
        if(field[0] != null & field[1] != null & field[2] != null){
            if(field[0].equals("X") & field[1].equals("X") & field[2].equals("X")){
                win("X");
            } else if(field[0].equals("O") & field[1].equals("O") & field[2].equals("O")){
                win("O");
            }
        }
 
        if(field[3] != null & field[4] != null & field[5] != null){
            if(field[3].equals("X") & field[4].equals("X") & field[5].equals("X")){
                win("X");
            } else if(field[3].equals("O") & field[4].equals("O") & field[5].equals("O")){
                win("O");
            }
        }
 
        if(field[6] != null & field[7] != null & field[8] != null){
            if(field[6].equals("X") & field[7].equals("X") & field[8].equals("X")){
                win("X");
            } else if(field[6].equals("O") & field[7].equals("O") & field[8].equals("O")){
                win("O");
            }
        }
        
 
 
        if(field[0] != null & field[3] != null & field[6] != null){
            if(field[0].equals("X") & field[3].equals("X") & field[6].equals("X")){
                win("X");
            } else if(field[0].equals("O") & field[3].equals("O") & field[6].equals("O")){
                win("O");
            }
        }
 
        if(field[1] != null & field[4] != null & field[7] != null){
            if(field[1].equals("X") & field[4].equals("X") & field[7].equals("X")){
                win("X");
            } else if(field[1].equals("O") & field[4].equals("O") & field[7].equals("O")){
                win("O");
            }
        }
 
 
        if(field[2] != null & field[5] != null & field[8] != null){
            if(field[2].equals("X") & field[5].equals("X") & field[8].equals("X")){
                win("X");
            } else if(field[2].equals("O") & field[5].equals("O") & field[8].equals("O")){
                win("O");
            }
        }
 
 
 
        if(field[0] != null & field[4] != null & field[8] != null){
            if(field[0].equals("X") & field[4].equals("X") & field[8].equals("X")){
                win("X");
            } else if(field[0].equals("O") & field[4].equals("O") & field[8].equals("O")){
                win("O");
            }
        }
 
 
        if(field[2] != null & field[4] != null & field[6] != null){
            if(field[2].equals("X") & field[4].equals("X") & field[6].equals("X")){
                win("X");
            } else if(field[2].equals("O") & field[4].equals("O") & field[6].equals("O")){
                win("O");
            }
        }
 
 
 
    }
 
    public static void win(String XO){
 
        switch (XO){
            case "X":
                the_winner = true;
                System.out.println("X's win!");
                gameActivity.alertDialog("X");
                break;
            case "O":
                the_winner = true;
                System.out.println("O's win!");
                gameActivity.alertDialog("O");
                break;
        }
 
    }
 
}
Добавлено через 59 секунд
А это второй, из которого и вызывается метод. Класс называется GameBrain
0
66 / 56 / 6
Регистрация: 28.12.2011
Сообщений: 322
24.08.2017, 13:50
Ясно, очередной код с запашком.

В общем падает потому что в методе
Java
1
2
3
4
5
public void makeToast(String text){
 
        Toast.makeText(GameActivity.this, text, Toast.LENGTH_SHORT).show();
 
    }
GameActivity.this возвращается null.

Как это исправить думай сам, т.к. для того чтобы исправить нужно все переписывать.
0
4 / 4 / 0
Регистрация: 16.12.2015
Сообщений: 140
24.08.2017, 13:52  [ТС]
Спасибо большое! Что бы я без вас делал
0
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
24.08.2017, 15:18
Если коротко, очень коротко и политкорректно, то в класс GameBrain надо в конструктор передать контекст, и эти методы alertDialog и makeToast перенести в этот класс, и вместо GameActivity.this передавать контекст. Будет работать, но вообще-то так никто не делает.
1
4 / 4 / 0
Регистрация: 16.12.2015
Сообщений: 140
24.08.2017, 15:27  [ТС]
Все как то решилось, сделал методы check() и win() не статическими и вроде еще что-то. Ну в общем дело скрывалось в этом
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.08.2017, 15:27
Помогаю со студенческими работами здесь

Toast.js
Приветствую. Столкнулся с такой проблемой: Есть страница, на ней n-количество полей для ввода. Есть кнопка "сформировать...

Toast Notification
Подскажите, какую команду нужно дописать чтобы скрыть уведомление. $app =...

Toast duration
Подскажите как задать свое время Добавлено через 1 минуту только вот мне надо большое время задать например минута

Toast trouble
Все Доброго времени суток! Начал учить андроид по книге, там приводился код для создания кастомного тоста, код написал точь в точь , но на...

Не выводит Toast
всем привет. есть код: Toast.makeText(c, "Start indexing...", Toast.LENGTH_LONG).show(); while...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru