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

Как сохранить состояние

27.10.2021, 20:18. Показов 518. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пытаюсь сохранить состояние переменной. Так как при повороте экрана значение исчезает.

Сделал так

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
package com.example.myapplication;
 
import androidx.appcompat.app.AppCompatActivity;
 
import android.content.Intent;
import android.os.Bundle;
 
import android.view.View;
 
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
 
public class MainActivity2 extends AppCompatActivity {
    private EditText editText;
    private EditText editText2;
    private EditText editText3;
    private TextView textView;
    private Button button;
    private Button off;
    private String d;
 
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
 
        editText = findViewById(R.id.editText);
        editText2 = findViewById(R.id.editText2);
        editText3 = findViewById(R.id.editText3);
        textView = findViewById(R.id.textView);
        off = findViewById(R.id.off);
        button = findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // Объявим числовые переменные
                double a;
                double b;
                double c;
                String msg = "";
 
                try {
                    // Считаем с editText и editText2 текстовые значения
                    String S1 = editText.getText().toString();
                    String S2 = editText2.getText().toString();
                    String S3 = editText3.getText().toString();
 
                    // Преобразуем текстовые переменные в числовые значения
                    a = Double.parseDouble(S1);
                    b = Double.parseDouble(S2);
                    c = Double.parseDouble(S3);
 
                    // Проведем с числовыми переменными нужные действия
                    if (a % 2 == 0 && b % 2 == 0 && c % 2 == 0) {
                        d = "Четные";
                    } else {
                        d = "Нечетные";
 
                    }
                    // Преобразуем ответ в число
 
 
                    // Выведем текст в textView
                    textView.setText(d);
                } catch (NumberFormatException e) {
                    textView.setText("Введите число !!!");
                }
 
            }
        });
        off.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.setClass(MainActivity2.this, MainActivity.class);
                finish();
            }
        });
 
 
    }
 
    public void onSaveInstanceState(Bundle savedInstanceState) {
 
        savedInstanceState.putString("count", d);
        super.onSaveInstanceState(savedInstanceState);
 
 
    }
 
    public void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
 
        d = savedInstanceState.getString("count");
        textView.setText(d);
    }
}
все отлично полученное значение переменной d сохраняется при повороте экрана. Но теперь стала пропадать надпись "Введите число !!!" при повороте. Как сделать что б не пропадала?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.10.2021, 20:18
Ответы с готовыми решениями:

Как сохранить состояние Service после перезагрузки телефона?
Как сохранить состояние Service после перезагрузки телефона??? т.е мне нужно чтоб сервис начал работать не сначала, а на том месте где...

Как сохранить состояние хронометра при повороте экрана?
в программе запускается хронометр Chronometer chronometer = (Chronometer) findViewById(R.id.chronometer); chronometer.start(); ...

Как сохранить состояние выделенных checkbox и list data в Listactivity?
Здравствуйте. Было задание сделать ListView c CheckBox, при нажатии на кнопку Add добавляется случайное число в ListActivity. Если выделить...

2
49 / 37 / 14
Регистрация: 05.02.2010
Сообщений: 249
28.10.2021, 00:15
Самый простой вариант при обработке исключения добавить надпись в d:
Java
1
2
3
4
catch (NumberFormatException e) {
    d = "Введите число !!!";
    textView.setText(d);
}
Тогда уже написанный код сработает.
Но вообще Вам нужно почитать про ViewModel и хранить там данные
Кроме того переход на ViewBinding сделает код гораздо читабельнее

Неплохо бы объединить считывание и преобразование в double:
Java
1
a = Double.parseDouble(editText.getText().toString());
0
0 / 0 / 0
Регистрация: 31.12.2016
Сообщений: 55
28.10.2021, 14:20  [ТС]
А можете глянуть так сделал ? Или нет
Первое активити
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
package com.example.myapplication;
 
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
 
import androidx.appcompat.app.AppCompatActivity;
 
public class MainActivity extends AppCompatActivity  {
 
    Button btnActTwo;
    Button button2;
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        btnActTwo = (Button) findViewById(R.id.btnActTwo);
        button2 = (Button) findViewById(R.id.button2);
 
        btnActTwo.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.setClass(MainActivity.this, MainActivity2.class);
                startActivity(intent);
            }
        });
 
 
 
        button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
 
                finish();
            }
        });
 
 
    }
}
Второе

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
package com.example.myapplication;
 
import androidx.appcompat.app.AppCompatActivity;
import androidx.lifecycle.MutableLiveData;
 
import android.content.Intent;
import android.os.Bundle;
 
import android.view.View;
 
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
 
import java.util.Objects;
 
public class MainActivity2 extends AppCompatActivity {
    private EditText editText;
    private EditText editText2;
    private EditText editText3;
    private TextView textView;
    private Button button;
    private Button off;
    private MutableLiveData<String> countLiveData = new MutableLiveData();
 
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
 
        editText = findViewById(R.id.editText);
 
        editText2 = findViewById(R.id.editText2);
        editText3 = findViewById(R.id.editText3);
        textView = findViewById(R.id.textView);
        off = findViewById(R.id.off);
        button = findViewById(R.id.button);
 
        if (!Objects.requireNonNull(countLiveData.getValue()).isEmpty()) {
            textView.setText(countLiveData.getValue());
        }
 
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // Объявим числовые переменные
                double a;
                double b;
                double c;
 
 
                try {
                    // Считаем с editText и editText2 текстовые значения
                    String S1 = editText.getText().toString();
                    String S2 = editText2.getText().toString();
                    String S3 = editText3.getText().toString();
 
                    // Преобразуем текстовые переменные в числовые значения
                    a = Double.parseDouble(S1);
                    b = Double.parseDouble(S2);
                    c = Double.parseDouble(S3);
 
                    // Проведем с числовыми переменными нужные действия
                    if (a % 2 == 0 && b % 2 == 0 && c % 2 == 0) {
                        countLiveData.setValue("Четные");
                    } else {
                        countLiveData.setValue("Нечетные");
 
                    }
                    // Преобразуем ответ в число
 
 
                    // Выведем текст в textView
                    textView.setText((CharSequence) countLiveData);
                } catch (NumberFormatException e) {
                    textView.setText("Введите число !!!");
                }
 
            }
        });
        off.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.setClass(MainActivity2.this, MainActivity.class);
                finish();
            }
        });
    }
 
}
У меня почему то падает когда пытаюсь войти во второе активити
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.10.2021, 14:20
Помогаю со студенческими работами здесь

FragmentStatePagerAdapter сохранить состояние между смертями активности
Доброго времени суток. Есть активность, на ней создаётся базовый фрагмент, которому задаю наследника FragmentStatePagerAdapter, имеющий в...

Сохранить состояние презентера при пересоздании (повороте) активити
Вот у презентера можно реализовать метод onDetach() в котором он обнуляет ссылку на активити то есть как бы на View(при пересоздании...

Как сохранить состояние приложения и восстановить его при следующем запуске
Здравствуйте! Я использую &lt;NSCoding&gt;, реализую необходимые методы, сохраняю в файл типа plist, в application...

Как сохранить состояние страницы?
Добрый день, у меня такой вопрос. У меня есть главная страница с id=&quot;home&quot;, при нажатии показать home убирает все что там есть и ставит...

Как сохранить состояние программы
Программа производит длительные вычисления и параллельно записывает результаты в базу. Как проще всего запомнить состояние программы, чтобы...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru