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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.77
tolya1095
10 / 7 / 1
Регистрация: 12.10.2012
Сообщений: 158
#1

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

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

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

Потеря потока при смене ориентации - Программирование Android
Здравствуйте! У меня приложения связывается по Bluetooth с другими устройствами. Всё работает хорошо. НО! Если перевернуть устройство и...

Не отображать SplashScreen при смене ориентации экрана - Программирование Android
Не могу понять как сделать чтобы сплэш не появлялся снова при смене ориентации экрана? + подскажите, почему при горизонтальной...

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

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

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

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
YuraAAA
1567 / 1309 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
02.01.2014, 16:33     Потеря вывода при смене ориентации экрана #2
Почитайте про activity lifecycle. При повороте экрана вью пересоздаётся. Перед этим срабатывает событие onSaveInstanceState, один из аргументов которого - Bundle. В bundle запишите нужные данные, а в событии onRestoreInstanceState - вычитайте обратно.
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());
      }
}
angryrobot
Командир зеленых роботов
346 / 283 / 53
Регистрация: 08.10.2013
Сообщений: 564
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());
    }
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.01.2014, 09:18     Потеря вывода при смене ориентации экрана
Еще ссылки по теме:

Обнуляется массив при смене ориентации устройства - Программирование Android
Здравствуйте. Суть такова. В активити создается массив из путей к изображениям, которые делаются при помощи камеры устройства. Потом...

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

Бесшовное проигрывание видео при смене ориентации - Программирование Android
Предложите пример или подскажите каким образом можно организовать бесшовное проигрывание видео при смене ориентации устройства?

Android label меняет размер текста при смене ориентации - Программирование Android
Я заметил что текст названия приложения меняет свой размер при смене ориентации. Но в большинстве приложений нет такого. Где находится...

При смене ориентации на land программа "вылетает" - Программирование Android
программа в Android Studio. Из приложения вырезал практически все. 5 часов экспериментировал так и не понял из за чего.Единственное...

SurfaceView при изменении ориентации экрана перегружается - Программирование Android
при создании тетриса возник вопрос. один из моих классов расширяет класс SurfaceView public class TetrisView extends SurfaceView ...


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

Или воспользуйтесь поиском по форуму:
tolya1095
10 / 7 / 1
Регистрация: 12.10.2012
Сообщений: 158
12.01.2014, 09:18  [ТС]     Потеря вывода при смене ориентации экрана #5
Вместо меню теперь использую ActionBar. При повороте экрана вылетаю в самый первый itemId ActionBar. Я правильно понимаю, что мне надо itemId сохранять?
Yandex
Объявления
12.01.2014, 09:18     Потеря вывода при смене ориентации экрана
Ответ Создать тему
Опции темы

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