Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
tolya1095
10 / 7 / 1
Регистрация: 12.10.2012
Сообщений: 158
1

Потеря вывода при смене ориентации экрана

02.01.2014, 14:51. Просмотров 2034. Ответов 4
Метки нет (Все метки)

Калькулятор вывел результат в компонент textview. Стоит поменять ориентацию экрана и весь результат подсчета пропадает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.01.2014, 14:51
Ответы с готовыми решениями:

Потеря потока при смене ориентации
Здравствуйте! У меня приложения связывается по Bluetooth с другими...

Блокировка навигации при смене ориентации экрана
Доброго времени суток.Прошу помощи у знающих: Приложение использует Navigation...

Не отображать SplashScreen при смене ориентации экрана
Не могу понять как сделать чтобы сплэш не появлялся снова при смене ориентации...

Выбрасывает из приложения при смене ориентации экрана
Здравствуйте. Следующая проблема. Создал папку layout-land в папке res. И при...

Задний фон при смене ориентации экрана
Здравствуйте! Мне надо чтобы фон не сжимался так, а как в HTML оптимизировал...

4
YuraAAA
1578 / 1319 / 282
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 2
02.01.2014, 16:33 2
Почитайте про activity lifecycle. При повороте экрана вью пересоздаётся. Перед этим срабатывает событие onSaveInstanceState, один из аргументов которого - Bundle. В bundle запишите нужные данные, а в событии onRestoreInstanceState - вычитайте обратно.
1
tolya1095
10 / 7 / 1
Регистрация: 12.10.2012
Сообщений: 158
03.01.2014, 23:21  [ТС] 3
Цитата Сообщение от YuraAAA Посмотреть сообщение
Почитайте про activity lifecycle. При повороте экрана вью пересоздаётся. Перед этим срабатывает событие onSaveInstanceState, один из аргументов которого - Bundle. В bundle запишите нужные данные, а в событии onRestoreInstanceState - вычитайте обратно.
Нашел урок на одном сайте. Попытался внедрить в пробное приложение. Не получилось.
1) Надо ли все эти методы вызывать или они только для наглядности жизненного цикла приведены автором статьи?
2) Где я навел косяк?
Кликните здесь для просмотра всего текста
XML
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
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >
 
    <Button
        android:id="@+id/ButtonSolution"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="29dp"
        android:text="Button" />
 
    <TextView
        android:id="@+id/TextResult"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="93dp" />
 
</LinearLayout>

Кликните здесь для просмотра всего текста
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
package com.example.test1;
 
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
 
public class MainActivity extends Activity implements View.OnClickListener {
    StringBuilder Result = new StringBuilder();
 
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button Solution = (Button) findViewById(R.id.ButtonSolution);
        Solution.setOnClickListener(this);
    }
    protected void onDestroy() {
        super.onDestroy();
      }
      protected void onPause() {
        super.onPause();
      }
      protected void onRestart() {
        super.onRestart();
      }
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
        String SaveResult = savedInstanceState.getString("Res");
        Result.setLength(0);
        Result.append(SaveResult);
      }
    protected void onResume() {
        super.onResume();
      }
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        String Res = Result.toString();
        outState.putString("SaveResult", Res);
     }
    protected void onStart() {
        super.onStart();
      }
      protected void onStop() {
        super.onStop();
      }
      public void onClick(View v) {
          switch (v.getId()) {
              case R.id.ButtonSolution:
                  showResult();
                  break;
          }
      }
      private void showResult() {
          Result.append("Сохрани меня");
          TextView TextResult = (TextView) findViewById(R.id.TextResult);
          TextResult.setText(Result.toString());
      }
}
0
angryrobot
Командир зеленых роботов
348 / 285 / 54
Регистрация: 08.10.2013
Сообщений: 565
04.01.2014, 12:00 4
Цитата Сообщение от tolya1095 Посмотреть сообщение
Надо ли все эти методы вызывать или они только для наглядности жизненного цикла приведены автором статьи?
Не надо, уберите лишнее. Переопределённый метод который внутри себя вызывает этот же метод суперкласса и больше ничего не делает - эквивалентен вообще отсутствию этого переопределённого метода.
Цитата Сообщение от tolya1095 Посмотреть сообщение
Где я навел косяк?
1) Сохраняете данные используея один ключ, а когда извлекаете - другой:
Java
1
2
3
4
//Сохранение результата:
outState.putString("SaveResult", Res);
//Загрузка 
String SaveResult = savedInstanceState.getString("Res");
2) После загрузки данных из Bundle нужно сразу же вывести их в ваш TextView.

В итоге у меня получилось такое:
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
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
 
public class MainActivity extends Activity implements View.OnClickListener {
    StringBuilder Result = new StringBuilder();
    TextView TextResult;
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button Solution = (Button) findViewById(R.id.ButtonSolution);
        TextResult = (TextView) findViewById(R.id.TextResult);
        Solution.setOnClickListener(this);
    }
 
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
        String SaveResult = savedInstanceState.getString("SaveResult");
        Result.setLength(0);
        Result.append(SaveResult);
        TextResult.setText(Result.toString());
    }
 
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        String Res = Result.toString();
        outState.putString("SaveResult", Res);
    }
 
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.ButtonSolution:
            showResult();
            break;
        }
    }
    
    private void showResult() {
        Result.append("Сохрани меня");
        TextResult.setText(Result.toString());
    }
}
1
tolya1095
10 / 7 / 1
Регистрация: 12.10.2012
Сообщений: 158
12.01.2014, 09:18  [ТС] 5
Вместо меню теперь использую ActionBar. При повороте экрана вылетаю в самый первый itemId ActionBar. Я правильно понимаю, что мне надо itemId сохранять?
0
12.01.2014, 09:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.01.2014, 09:18

При смене ориентации экрана накладываются фрагменты
Юзаю Android.Support.V4.App.Fragment, вроде бы все нормально. При переключении...

Пропажа данных при смене ориентации
При поворачивании телефона все данные обнуляются и вообще такое такое чувство,...

Перезагрузка списка при смене ориентации приложения
Приветствую. Имеется приложение построено на фрагментах . В приложении есть...


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

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

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