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

Ошибка вывода переменной через toast

15.11.2017, 22:00. Просмотров 832. Ответов 2
Метки нет (Все метки)

Приветствую, я пишу математическое приложение на Java. Непосредственно сейчас в программе существует проблема, которая как не даёт продолжить работу, так и проверить исходный код, сам как решить её я не знаю..
Вообщем сейчас я имею следующий код для конкретного Activity:
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
import android.content.Intent;
import android.support.annotation.IdRes;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import static app.analysis.mai.MatrixMessageActiviry123.a;
 
public class MessageActivity1 extends AppCompatActivity {
 
TextView celzadach, poyas4, poyas5, poyas6;
RadioGroup rgroup;
RadioButton sravnenkr1, sravnenkr2, sravnenkr3;
Spinner spn2;
String prioritet[] = {"9", "8", "7", "6", "5", "4", "3", "2", "1"};
ArrayAdapter<String> adapter2;
int znachn1;
Button sootnesen1;
static int d, b;
 
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_message1);
 
    celzadach = (TextView) findViewById(R.id.celzadach);
    Intent intent5 = getIntent();
    String message1 = intent5.getStringExtra("message1");
    celzadach.setText(message1);
 
    poyas4 = (TextView) findViewById(R.id.poyas4);
    poyas4.setText("Определение важности критериев сравнения относительно заявленной цели:");
 
    poyas5 = (TextView) findViewById(R.id.poyas5);
    poyas5.setText("Какой из сравниваемых критериев более предпочтительный?");
 
    poyas6 = (TextView) findViewById(R.id.poyas6);
    poyas6.setText("Предпочтительней на сколько?");
 
    sravnenkr1 = (RadioButton) findViewById(R.id.sravnenkr1);
    Intent intent6 = getIntent();
    String message2 = intent6.getStringExtra("message2");
    sravnenkr1.setText(message2);
 
    sravnenkr2 = (RadioButton) findViewById(R.id.sravnenkr2);
    Intent intent7 = getIntent();
    String message3 = intent7.getStringExtra("message3");
    sravnenkr2.setText(message3);
 
    sravnenkr3 = (RadioButton) findViewById(R.id.sravnenkr3);
    sravnenkr3.setText("Сравниваемые критерии одинаково важны");
 
    rgroup = (RadioGroup) findViewById(R.id.RadioGroup1);
 
 
    rgroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup radioGroup, @IdRes int q) {
            switch (q) {
                case R.id.sravnenkr1:
                    d = znachn1;
                    b = 1 / znachn1;
                    break;
                case R.id.sravnenkr2:
                    b = znachn1;
                    d = 1 / znachn1;
                    break;
                case R.id.sravnenkr3:
                    d = 1;
                    b = 1;
                    break;
            }
        }
    });
 
    spn2 = (Spinner) findViewById(R.id.spnPrioritet);
    adapter2 = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, prioritet);
    spn2.setAdapter(adapter2);
    spn2.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
 
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int position2, long id) {
            switch (position2) {
                case 0:
                    znachn1 = 9;
                    break;
                case 1:
                    znachn1 = 8;
                    break;
                case 2:
                    znachn1 = 7;
                    break;
                case 3:
                    znachn1 = 6;
                    break;
                case 4:
                    znachn1 = 5;
                    break;
                case 5:
                    znachn1 = 4;
                    break;
                case 6:
                    znachn1 = 3;
                    break;
                case 7:
                    znachn1 = 2;
                    break;
                case 8:
                    znachn1 = 1;
                    break;
            }
        }
 
        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {
        }
    });
 
    sootnesen1 = (Button) findViewById(R.id.sootnesen1);
    sootnesen1.setText("Далее");
    sootnesen1.setOnClickListener(new View.OnClickListener() {
 
        @Override
        public void onClick(View view) {
            Intent intent8 = new Intent(MessageActivity1.this, MessageActivity2.class);
            Toast toast = Toast.makeText(getApplicationContext(),"a="+a, Toast.LENGTH_SHORT);
            toast.show();
            startActivity(intent8);
        }
 
    });
}
}
В рамках работы происходит статический импорт переменной "a" из класса MatrixMessageActiviry123 и вывод её через Toast на следующий Activity.
Код класса MatrixMessageActiviry123:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import static app.analysis.mai.MessageActivity1.b;
import static app.analysis.mai.MessageActivity1.d;
 
public class MatrixMessageActiviry123 {
static int a, e, i;
 
public static void main(String[] args) {
    a = 1;
    e = 1;
    i = 1;
    int[][] matrix1 = {{a, b, 2},
                               {d, e, 7},
                               {4, 5, i}};
 
    for (int i = 0; i < matrix1.length; i++) {
        for (int j = 0; j < matrix1[i].length; j++) {
            System.out.print(matrix1[i][j] + " ");
        }
    }
    System.out.println();
}
}
Однако, при самом переходе Toast выдаёт: "a=0".
Тоже самое выдает, если попытаться вывести сумму переменных b и d.
В чём проблема? Компилятор ни на что не ругается..
Помогите, пожалуйста!!
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.11.2017, 22:00
Ответы с готовыми решениями:

Ошибка с Toast
public void makeToast(String text){ ...

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

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

Работа с Toast
Здавствуйте! Имеются две кнопки : mAnswerNo = (Button)...

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

2
korshun84
86 / 86 / 22
Регистрация: 08.07.2014
Сообщений: 508
16.11.2017, 12:33 2
Лучший ответ Сообщение было отмечено Seth_ как решение

Решение

Цитата Сообщение от Seth_ Посмотреть сообщение
В чём проблема?
В том, что ты обращаешься к переменной, которая еще не была инициализирована. Сделай функцию, которая будет делать нужные тебе вычисления и возвращать определенный результат, с ней и работай.
Для чего тебе в Android проекте метод public static void main(String[] args) { } ?
1
Seth_
0 / 0 / 0
Регистрация: 20.10.2017
Сообщений: 8
17.11.2017, 17:11  [ТС] 3
Спасибо, понял в чём ошибка, попробую с вычислениями разобраться)

Добавлено через 18 часов 32 минуты
korshun84, привет, я разобрался с переменной a и типами переменных. Вырезал тот метод. Для переменных b, d и znachn1 прописал тип double. Далее в рамках проекта я прописал действие деления для d и b:
Java
1
2
3
4
5
class MatrixMessageActiviry123 {
    static byte a = 1;
    static byte e = 1;
    static byte i = 1;
    static double w0 = d/b;
Значение которых задаются через RadioGroup и Spinner.
Однако, при проверке работы программа обрабатывает нажатие только 1-го RadioButton:
Java
1
2
3
4
case R.id.sravnenkr1:
                        d = znachn1;
                        b = 1 / znachn1;
                        break;
и 1-го значения Spinner, т.е znachn1 = 9.
В Toast всегда выводится w0 =81.0, при любой комбинации нажатия на элементы экрана.
Не подскажите как это поправить?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.11.2017, 17:11

Не выводит Toast
всем привет. есть код: Toast.makeText(c, &quot;Start indexing...&quot;,...

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

Всплывающее сообщение (Toast)
Здравствуйте! Прочитал несколько раз 12 урок, но никак не смог реализовать. ...


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

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

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