Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
 
karishka2507
0 / 0 / 0
Регистрация: 19.11.2015
Сообщений: 23
#1

Не изменяется текст в TextView - Программирование Android

18.04.2016, 14:44. Просмотров 382. Ответов 22
Метки нет (Все метки)

...А возможно беда в чем - то другом
Собственно простецкая программа. Не могу и проверить на работоспособность, т.к все хорошо, но при нажатии на кнопку, ничего не меняется.
ну и говно-код xml,если понадобится,прикреплю
буду благодарна за помощь!
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
package com.karinaassirova.android.fuelconsumption;
 
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.RadioGroup;
import android.widget.TextView;
 
public class MainActivity extends AppCompatActivity {
    double liters = 0;
    double totalPrice = 0;
    private EditText km;
    private EditText inCity;
    private EditText outCity;
    private EditText mixed;
    private EditText mileage;
    private EditText price;
 
    private CheckBox chBoxRoofRack;
    private CheckBox chBoxTrailer;
    private CheckBox chBoxClimate;
    private CheckBox chBoxWindows;
    private RadioGroup radioGroup;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        km = (EditText) findViewById(R.id.editTextKm);
        inCity = (EditText) findViewById(R.id.editTextInCity);
        outCity = (EditText) findViewById(R.id.editTextOutCity);
        mixed = (EditText) findViewById(R.id.editTextMixed);
        mileage = (EditText) findViewById(R.id.editTextMileage);
        price = (EditText) findViewById(R.id.editTextPrice);
 
        chBoxRoofRack = (CheckBox) findViewById(R.id.checkBoxRoofRack);
        chBoxTrailer = (CheckBox) findViewById(R.id.checkBoxTrailer);
        chBoxClimate = (CheckBox) findViewById(R.id.checkBoxClimate);
        chBoxWindows =(CheckBox) findViewById(R.id.checkBoxWindows);
 
        radioGroup = (RadioGroup) findViewById(R.id.radioGroup);
    }
//    public void onRadioClick(View v) {
 
 
//        finish();
//    }
 
 
    private double countLiters(double liters) {
        switch (radioGroup.getId()) {
            case R.id.radioButtonInCity:
                liters = (inCity.getText() == null)?0:Double.parseDouble(inCity.getText().toString());
                break;
            case R.id.radioButtonOutCity:
                liters = (outCity.getText() == null)?0:Double.parseDouble(outCity.getText().toString());
                break;
            case R.id.radioButtonMixed:
                liters = (mixed.getText() == null)?0:Double.parseDouble(mixed.getText().toString());
                break;
            default:
                break;
        }
 
            liters = liters + (liters * 0.04);  //фары
 
        boolean isCheckedRoofRack = chBoxRoofRack.isChecked();
        boolean isCheckedTrailer = chBoxTrailer.isChecked();
        boolean isCheckedClimate = chBoxClimate.isChecked();
        boolean isCheckedWindows = chBoxWindows.isChecked();
 
        if ( isCheckedRoofRack) {               //багажник
            liters = liters + (liters * 0.15);
        }
        if (isCheckedTrailer){                  //прицеп
            liters = liters + (liters * 0.2);
        }
        if (isCheckedClimate){                  //кл-контроль
            liters = liters + (liters * 0.1);
        }
        if (isCheckedWindows){                  //окна
            liters = liters + (liters * 0.04);
        }
 
        double mil = (mileage.getText() == null)?0:Double.parseDouble(mileage.getText().toString());
        mil = mil/40000;
        mil = Math.round (mil);
        liters = liters + (liters * mil);
        double kilom = (km.getText() == null)?0:Double.parseDouble(km.getText().toString());
        return liters*kilom;
    }
 
    private double countPrice(double liters) {
        double pricePerLiter = (price.getText() == null)?0:Double.parseDouble(price.getText().toString());
        totalPrice = pricePerLiter * liters;
        return totalPrice;
    }
 
    private void displayLiters(String message) {
        TextView priceTextView = (TextView) findViewById(R.id.textViewResultLiters);
        priceTextView.setText(message);
    }
 
    private void displayPrice(String message) {
        TextView priceTextView = (TextView) findViewById(R.id.textViewResultPrice);
        priceTextView.setText(message);
    }
    public void onClickResult(View view) {
        liters = countLiters(liters);
        totalPrice = countPrice(liters);
 
        String resLiters = getString(R.string.resultLiters, liters);
        String resPrice = getString(R.string.resultPrice, totalPrice);
 
        displayLiters(resLiters);
        displayPrice(resPrice);
 
    }
 
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Pablito
2458 / 1903 / 591
Регистрация: 12.05.2014
Сообщений: 6,711
Завершенные тесты: 1
18.04.2016, 14:49     Не изменяется текст в TextView #2
а где слушатель назначается на эти чекбоксы?
если его нет то в onCreate можно добавить что-то типа
Java
1
2
3
4
5
6
7
8
9
10
11
12
        radioGroup .setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                switch (checkedId) {
                    case R.id.checkBoxRoofRack:
                        // что-то вызываем и пересчитываем
                        break;
                    case R.id.bla-bla: // и так далее
                        break
                }
            }
        });
karishka2507
0 / 0 / 0
Регистрация: 19.11.2015
Сообщений: 23
18.04.2016, 14:54  [ТС]     Не изменяется текст в TextView #3
а в другом проекте такое срабатывало. или так нельзя?
или Вы не про это а про RadioGroup?

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
boolean isCheckedRoofRack = chBoxRoofRack.isChecked();
        boolean isCheckedTrailer = chBoxTrailer.isChecked();
        boolean isCheckedClimate = chBoxClimate.isChecked();
        boolean isCheckedWindows = chBoxWindows.isChecked();
 
        if ( isCheckedRoofRack) {               //багажник
            liters = liters + (liters * 0.15);
        }
        if (isCheckedTrailer){                  //прицеп
            liters = liters + (liters * 0.2);
        }
        if (isCheckedClimate){                  //кл-контроль
            liters = liters + (liters * 0.1);
        }
        if (isCheckedWindows){                  //окна
            liters = liters + (liters * 0.04);
        }
Pablito
2458 / 1903 / 591
Регистрация: 12.05.2014
Сообщений: 6,711
Завершенные тесты: 1
18.04.2016, 15:08     Не изменяется текст в TextView #4
еще раз - какой метод вызывается и почему когда кто-то нажимает на любой чекбокс или на кнопку?
karishka2507
0 / 0 / 0
Регистрация: 19.11.2015
Сообщений: 23
18.04.2016, 15:14  [ТС]     Не изменяется текст в TextView #5
при нажатии на радиобаттон выбираем одно из трех чисел, которые беру из edit text ( in city/out city/mixed)
при выборе чекбокса. в зависимости от выбора, умножаем предыдущее число (liters) на определенные проценты
метод countPrice просто умножает число(liters) на еще число (km), получаем totalPrice.
при нажатии на кнопку (onClickResult ) собственно litres (1 число) и totalPrice хочу выдать на экран в text view, предварительно засунув их в строки.
сейчас при нажатии на кнопку подсчета, не меняется ничего
может я не в том порядке располагаю методы ?
Миниатюры
Не изменяется текст в TextView  
Pablito
2458 / 1903 / 591
Регистрация: 12.05.2014
Сообщений: 6,711
Завершенные тесты: 1
18.04.2016, 15:20     Не изменяется текст в TextView #6
воот
onClickResult
он прописан где-то в xml? где и как? (можно показать код)

если он нигде не прописан в xml то на кнопку (непонятно до сих пор какую, потому что в onCreate ни одной кнопки не инициализируется) надо вещать слушатель
karishka2507
0 / 0 / 0
Регистрация: 19.11.2015
Сообщений: 23
18.04.2016, 21:05  [ТС]     Не изменяется текст в TextView #7
прописан. вроде как)
XML
1
2
3
4
5
6
7
8
9
<Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/count"
        android:id="@+id/buttonCount"
        android:drawableLeft="@drawable/bill"
        android:layout_alignBottom="@+id/buttonScrsht"
        android:layout_alignParentStart="true"
        android:onClick="onClickResult"/>
Добавлено через 5 часов 43 минуты
проблема еще актуальна
Pablito
2458 / 1903 / 591
Регистрация: 12.05.2014
Сообщений: 6,711
Завершенные тесты: 1
19.04.2016, 10:49     Не изменяется текст в TextView #8
вместо
Java
1
switch (radioGroup.getId())
надо писать
Java
1
switch (radioGroup.getCheckedRadioButtonId())
karishka2507
0 / 0 / 0
Регистрация: 19.11.2015
Сообщений: 23
19.04.2016, 12:42  [ТС]     Не изменяется текст в TextView #9
Еще раз кину полный код. Приложение перестало вылетать при нажатии кнопки, сделала проверку везде, чтоб если editText`ы пустые, то переменные не оставались в воздухе,а становились 0. Но все равно ничего не меняется)) так же в text 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
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
public class MainActivity extends AppCompatActivity {
    double liters = 0;
    double totalPrice = 0;
    EditText km;
    EditText inCity;
    EditText outCity;
    EditText mixed;
    EditText mileage;
    EditText price;
 
    CheckBox chBoxRoofRack;
    CheckBox chBoxTrailer;
    CheckBox chBoxClimate;
    CheckBox chBoxWindows;
 
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        km = (EditText) findViewById(R.id.editTextKm);
        inCity = (EditText) findViewById(R.id.editTextInCity);
        outCity = (EditText) findViewById(R.id.editTextOutCity);
        mixed = (EditText) findViewById(R.id.editTextMixed);
        mileage = (EditText) findViewById(R.id.editTextMileage);
        price = (EditText) findViewById(R.id.editTextPrice);
 
        chBoxRoofRack = (CheckBox) findViewById(R.id.checkBoxRoofRack);
        chBoxTrailer = (CheckBox) findViewById(R.id.checkBoxTrailer);
        chBoxClimate = (CheckBox) findViewById(R.id.checkBoxClimate);
        chBoxWindows =(CheckBox) findViewById(R.id.checkBoxWindows);
 
        RadioGroup radioGroup = (RadioGroup) findViewById(R.id.radioGroup);
        radioGroup.clearCheck();
 
        radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
 
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                // TODO Auto-generated method stub
                switch (checkedId) {
                    case -1:
                        liters = 0;
                        break;
                    case R.id.radioButtonInCity:
                        if (inCity.getText().length() == 0)
                            liters =0;
                        else
                            liters = Double.parseDouble(inCity.getText().toString());
                        break;
                    case R.id.radioButtonOutCity:
                        if (outCity.getText().length() == 0)
                            liters =0;
                        else
                            liters = Double.parseDouble(outCity.getText().toString());
                        break;
                    case R.id.radioButtonMixed:
                        if (mixed.getText().length() == 0)
                            liters =0;
                        else
                            liters = Double.parseDouble(mixed.getText().toString());
                        break;
                }
            }
        });
    }
 
 
 
    private double countLiters(double liters) {
 
        if (liters == 0)
            return liters;
        else {
            liters = liters + (liters * 0.04);  //фары
 
            if (chBoxRoofRack.isChecked()) {               //багажник
                liters = liters + (liters * 0.15);
            }
            if (chBoxTrailer.isChecked()) {                  //прицеп
                liters = liters + (liters * 0.2);
            }
            if (chBoxClimate.isChecked()) {                  //кл-контроль
                liters = liters + (liters * 0.1);
            }
            if (chBoxWindows.isChecked()) {                  //окна
                liters = liters + (liters * 0.04);
            }
            double mil;
            if (mileage.getText().length() == 0)
                mil = 0;
            else {
                mil = Double.parseDouble(mileage.getText().toString());
                mil = mil / 40000;
                mil = Math.round(mil);
            }
            liters = liters + (liters * mil);
            double kilom;
            if (km.getText().length() == 0)
                kilom = 0;
            else
                kilom = Double.parseDouble(km.getText().toString());
            liters = liters * kilom;
            return liters;
        }
    }
 
    private double countPrice(double liters) {
        double pricePerLiter;
        if (price.getText().length() == 0)
           pricePerLiter = 0;
        else
            pricePerLiter  = Double.parseDouble(price.getText().toString());
 
        totalPrice = pricePerLiter * liters;
        return totalPrice;
    }
 
    public void onClickResult(View view) {
        liters = countLiters(liters);
        totalPrice  = countPrice(liters);
 
        String resLiters = getString(R.string.resultLiters, liters);
        String resPrice = getString(R.string.resultPrice, totalPrice);
 
        TextView litersTextView = (TextView) findViewById(R.id.textViewResultLiters);
        litersTextView.setText(resLiters);
 
        TextView priceTextView = (TextView) findViewById(R.id.textViewResultPrice);
        priceTextView.setText(resPrice);
    }
 
}
Pablito
2458 / 1903 / 591
Регистрация: 12.05.2014
Сообщений: 6,711
Завершенные тесты: 1
19.04.2016, 13:15     Не изменяется текст в TextView #10
Java
1
2
public void onClickResult(View view) {
        liters = countLiters(liters);
liters равен 0
нажимается кнопка, срабатывает countLiters в который передается 0 и сразу же сваливает оттдуда, потому что там написано
Java
1
2
if (liters == 0)
            return liters;
дальше читать не стал
karishka2507
0 / 0 / 0
Регистрация: 19.11.2015
Сообщений: 23
19.04.2016, 13:18  [ТС]     Не изменяется текст в TextView #11
окей, тупанула. убрала. все равно та же история.
а вот здесь получается все нормально ?
Java
1
2
3
4
5
6
7
8
String resLiters = getString(R.string.resultLiters, liters);
        String resPrice = getString(R.string.resultPrice, totalPrice);
 
        TextView litersTextView = (TextView) findViewById(R.id.textViewResultLiters);
        litersTextView.setText(resLiters);
 
        TextView priceTextView = (TextView) findViewById(R.id.textViewResultPrice);
        priceTextView.setText(resPrice);
Добавлено через 46 секунд
по идее, даже если сразу 0, то печатать то хотя бы 0 должен.
а у меня так и остается лалала %d лалала
Pablito
2458 / 1903 / 591
Регистрация: 12.05.2014
Сообщений: 6,711
Завершенные тесты: 1
19.04.2016, 13:37     Не изменяется текст в TextView #12
Цитата Сообщение от karishka2507 Посмотреть сообщение
а у меня так и остается
в onClickResult первой же строкой что-нибудь напечаталь в консоль и посмотреть, заходит ли вообще в этот метод при нажатии кнопки

и просто интересно чему равно R.string.resultLiters
karishka2507
0 / 0 / 0
Регистрация: 19.11.2015
Сообщений: 23
19.04.2016, 13:40  [ТС]     Не изменяется текст в TextView #13
resultLiters это id textview, который изначально пустой. при нажатии хотелось бы, чтоб появлялась надпись и собственно измененное число
XML
1
2
<string name="resultLiters">Total: %d liters of fuel.</string>
 <string name="resultPrice">Total: %d price of the ride.</string>
сейчас сделала изначально пустым textView`ы. при нажатии текст появляется, даже оба, но число не вставляется, а остается %d
может у меня переменные "не доходят" до inClick`a ?
Pablito
2458 / 1903 / 591
Регистрация: 12.05.2014
Сообщений: 6,711
Завершенные тесты: 1
19.04.2016, 13:59     Не изменяется текст в TextView #14
можно еще раз весь код? актуальную версию
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.04.2016, 14:56     Не изменяется текст в TextView
Еще ссылки по теме:
Android Как программно изменить текст в TextView
В зависимости от позиции Spinner-а менять текст в TextView Android
Android Получить текст из одного TextView в кастомном ListView
Изменять текст в TextView по таймеру каждые 5 минут Android
Android Как каждую секунду менять текст TextView?

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

Или воспользуйтесь поиском по форуму:
karishka2507
0 / 0 / 0
Регистрация: 19.11.2015
Сообщений: 23
19.04.2016, 14:56  [ТС]     Не изменяется текст в TextView #15
теперь что то вообще вылетает при нажатии
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
public class MainActivity extends AppCompatActivity {
    double liters = 0;
    double totalPrice = 0;
    EditText km;
    EditText inCity;
    EditText outCity;
    EditText mixed;
    EditText mileage;
    EditText price;
 
    CheckBox chBoxRoofRack;
    CheckBox chBoxTrailer;
    CheckBox chBoxClimate;
    CheckBox chBoxWindows;
 
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        km = (EditText) findViewById(R.id.editTextKm);
        inCity = (EditText) findViewById(R.id.editTextInCity);
        outCity = (EditText) findViewById(R.id.editTextOutCity);
        mixed = (EditText) findViewById(R.id.editTextMixed);
        mileage = (EditText) findViewById(R.id.editTextMileage);
        price = (EditText) findViewById(R.id.editTextPrice);
 
        chBoxRoofRack = (CheckBox) findViewById(R.id.checkBoxRoofRack);
        chBoxTrailer = (CheckBox) findViewById(R.id.checkBoxTrailer);
        chBoxClimate = (CheckBox) findViewById(R.id.checkBoxClimate);
        chBoxWindows =(CheckBox) findViewById(R.id.checkBoxWindows);
 
        RadioGroup radioGroup = (RadioGroup) findViewById(R.id.radioGroup);
        radioGroup.clearCheck();
 
        radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
 
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                // TODO Auto-generated method stub
                switch (checkedId) {
                    case -1:
                        liters = 0;
                        break;
                    case R.id.radioButtonInCity:
                        if (inCity.getText().length() == 0)
                            liters =0;
                        else
                            liters = Double.parseDouble(inCity.getText().toString());
                        break;
                    case R.id.radioButtonOutCity:
                        if (outCity.getText().length() == 0)
                            liters =0;
                        else
                            liters = Double.parseDouble(outCity.getText().toString());
                        break;
                    case R.id.radioButtonMixed:
                        if (mixed.getText().length() == 0)
                            liters =0;
                        else
                            liters = Double.parseDouble(mixed.getText().toString());
                        break;
                }
            }
        });
    }
 
 
 
    private double countLiters(double liters) {
 
            liters = liters + (liters * 0.04);  //фары
 
            if (chBoxRoofRack.isChecked()) {               //багажник
                liters = liters + (liters * 0.15);
            }
            if (chBoxTrailer.isChecked()) {                  //прицеп
                liters = liters + (liters * 0.2);
            }
            if (chBoxClimate.isChecked()) {                  //кл-контроль
                liters = liters + (liters * 0.1);
            }
            if (chBoxWindows.isChecked()) {                  //окна
                liters = liters + (liters * 0.04);
            }
            double mil;
            if (mileage.getText().length() == 0)
                mil = 0;
            else {
                mil = Double.parseDouble(mileage.getText().toString());
                mil = mil / 40000;
                mil = Math.round(mil);
            }
            liters = liters + (liters * mil);
            double kilom;
            if (km.getText().length() == 0)
                kilom = 0;
            else
                kilom = Double.parseDouble(km.getText().toString());
            liters = liters * kilom;
            return liters;
    }
 
    private double countPrice(double liters) {
        double pricePerLiter;
        if (price.getText().length() == 0)
           pricePerLiter = 0;
        else
            pricePerLiter  = Double.parseDouble(price.getText().toString());
 
        totalPrice = pricePerLiter * liters;
        return totalPrice;
    }
 
    public void onClickResult(View view) {
        liters = countLiters(liters);
        totalPrice  = countPrice(liters);
 
        String resLiters = getString(R.string.resultLiters, liters);
        String resPrice = getString(R.string.resultPrice, totalPrice);
 
        TextView litersTextView = (TextView) findViewById(R.id.textViewResultLiters);
        litersTextView.setText(resLiters);
 
        TextView priceTextView = (TextView) findViewById(R.id.textViewResultPrice);
        priceTextView.setText(resPrice);
    }
 
}
Добавлено через 48 минут
java.lang.IllegalStateException: Could not execute method for android:onClick
вот такая стала вылезать,при нажатии кнопки, при любом состоянии всех полей
Yandex
Объявления
19.04.2016, 14:56     Не изменяется текст в TextView
Ответ Создать тему
Опции темы

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