Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Russtem81
3 / 3 / 1
Регистрация: 15.10.2015
Сообщений: 59
1

Динамический интерфейс, восстановление Activity

22.10.2015, 14:58. Просмотров 306. Ответов 2
Метки нет (Все метки)

Как восстановить переменную при возврате в активность.(варианты с записью в файл или БД пока не рассматриваются, интересен базовый функционал)

При вращении экрана активность создается в соответствии с реализованным SQL запросом.
отрабатывают методы:
10-22 16:49:26.012 16758-16758/com.example.funktion D/Проверка﹕ onPause
10-22 16:49:26.022 16758-16758/com.example.funktion D/Проверка﹕ onSaveInstanceState
10-22 16:49:26.022 16758-16758/com.example.funktion D/Проверка﹕ onStop
10-22 16:49:26.022 16758-16758/com.example.funktion D/Проверка﹕ onDestroy
10-22 16:49:26.054 16758-16758/com.example.funktion D/Проверка﹕ onStart
10-22 16:49:26.062 16758-16758/com.example.funktion D/Проверка﹕ onRestoreInstanceState
в случае если перехожу в новую активность
10-22 16:53:38.646 16758-16758/com.example.funktion D/Проверка﹕ onPause
10-22 16:53:38.887 16758-16758/com.example.funktion D/Проверка﹕ onSaveInstanceState
10-22 16:53:38.887 16758-16758/com.example.funktion D/Проверка﹕ onStop
судя по последовательности необходимые данные сохраняются, но при возврате
10-22 16:54:21.247 16758-16758/com.example.funktion D/Проверка﹕ onDestroy
10-22 16:54:21.247 16758-16758/com.example.funktion D/Проверка﹕ onStart
не вызывается метод onRestoreInstanceState.



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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
public class MainActivity extends Activity {
    private static final String TAG = "Проверка";
    public final static String EXTRA_MESSAGE ="com.example.funktion.MESSAGE";
    private ArrayList<String> MyList;
    {
        MyList = new ArrayList<String>();
    }
    ListView mList;
    String mMessage;
    EditText meditText;
    DatabaseHelper sqlHelper;
    Cursor userCursor = null;
         /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
 
        setContentView(R.layout.activity_main);
        mList=(ListView)findViewById(R.id.listView);
        meditText= (EditText) findViewById(R.id.edit_message);
        mMessage = meditText.getText().toString();
 
    }
    protected void onDestroy() {
        super.onDestroy();
        Log.d(TAG, "onDestroy");
    }
    protected void onPause() {
        super.onPause();
        Log.d(TAG, "onPause");
    }
    protected void onRestart() {
        super.onRestart();
        Log.d(TAG, "onRestart");
    }
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
        mMessage=savedInstanceState.getString("count");
        Log.d(TAG, "onRestoreInstanceState");
    }
    protected void onResume() {
        super.onResume();
        SQL(mMessage);
        Log.d(TAG, "onResume ");
    }
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putString("count",mMessage);
        Log.d(TAG, "onSaveInstanceState");
    }
    protected void onStart() {
        super.onStart();
        Log.d(TAG, "onStart");
    }
    protected void onStop() {
        super.onStop();
        Log.d(TAG, "onStop");
    }
   @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
 
        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }
 
        return super.onOptionsItemSelected(item);
    }
    public void sendMessage(View view)  {
         mMessage = meditText.getText().toString();
         SQL(mMessage);
   }
    ListView SQL(String mMessage){
        sqlHelper=new DatabaseHelper(this);
        sqlHelper = new DatabaseHelper(getApplicationContext());
        sqlHelper.create_db();
        MyList.clear();
        if (mMessage.length()==0) {
            Toast toast = Toast.makeText(getApplicationContext(),
                    "Введите RAS статус", Toast.LENGTH_SHORT);
            toast.show();
        }
        else {
 
 
            try {
 
                sqlHelper.open();
                String query = " SELECT * FROM " + DatabaseHelper.TABLE +
                        " Where " + DatabaseHelper.COLUMN_E_CODE + " LIKE " + " '%" + mMessage + "%' ";
               // Log.i(TAG, "Значение из массива mMessage из SQL  " + mMessage);
 
                userCursor = sqlHelper.database.rawQuery(query, null);
                int sql=userCursor.getCount();
 
                // Log.i(TAG, "String.valueOf(userCursor.getCount())"+String.valueOf(userCursor.getCount()) );
                //Log.i(TAG,""+ sql );
 
 
 
                if(sql == 0){
                    Toast toast = Toast.makeText(getApplicationContext(),
                            "Вы ввели какую то Х...", Toast.LENGTH_SHORT);
                    toast.show();
 
                }
                else if (sql ==1) {
                    userCursor.moveToFirst();
                    MyList.add(" COLUMN_ID:  " + userCursor.getString(userCursor.getColumnIndex(DatabaseHelper.COLUMN_ID)));
                    MyList.add(" COLUMN_E_CODE:  " + userCursor.getString(userCursor.getColumnIndex(DatabaseHelper.COLUMN_E_CODE)));
                    MyList.add(" COLUMN_E_MESSAGE:  " + userCursor.getString(userCursor.getColumnIndex(DatabaseHelper.COLUMN_E_MESSAGE)));
                    MyList.add(" COLUMN_DETECT:  " +userCursor.getString(userCursor.getColumnIndex(DatabaseHelper.COLUMN_DETECT)));
                    MyList.add(" COLUMN_CHECK:  " + userCursor.getString(userCursor.getColumnIndex(DatabaseHelper.COLUMN_CHECK)));
                    MyList.add(" COLUMN_MOTOR:  " +userCursor.getString(userCursor.getColumnIndex(DatabaseHelper.COLUMN_MOTOR)));
                    MyList.add(" COLUMN_SENSOR:  " + userCursor.getString(userCursor.getColumnIndex(DatabaseHelper.COLUMN_SENSOR)));
                    MyList.add(" COLUMN_ROOT_CHECK:  " +userCursor.getString(userCursor.getColumnIndex(DatabaseHelper.COLUMN_ROOT_CHECK)));
                    MyList.add(" COLUMN_RESOL:  " + userCursor.getString(userCursor.getColumnIndex(DatabaseHelper.COLUMN_RESOL)));
 
                }
                else if (sql>1) {
                    while (userCursor.moveToNext())
                    {
                        MyList.add(" COLUMN_ID:  " + userCursor.getString(userCursor.getColumnIndex(DatabaseHelper.COLUMN_ID)));
                        MyList.add(" COLUMN_E_CODE:  " + userCursor.getString(userCursor.getColumnIndex(DatabaseHelper.COLUMN_E_CODE)));
                        MyList.add(" COLUMN_E_MESSAGE:  " + userCursor.getString(userCursor.getColumnIndex(DatabaseHelper.COLUMN_E_MESSAGE)));
                        MyList.add(" COLUMN_DETECT:  " +userCursor.getString(userCursor.getColumnIndex(DatabaseHelper.COLUMN_DETECT)));
                        MyList.add(" COLUMN_CHECK:  " + userCursor.getString(userCursor.getColumnIndex(DatabaseHelper.COLUMN_CHECK)));
                        MyList.add(" COLUMN_MOTOR:  " +userCursor.getString(userCursor.getColumnIndex(DatabaseHelper.COLUMN_MOTOR)));
                        MyList.add(" COLUMN_SENSOR:  " + userCursor.getString(userCursor.getColumnIndex(DatabaseHelper.COLUMN_SENSOR)));
                        MyList.add(" COLUMN_ROOT_CHECK:  " +userCursor.getString(userCursor.getColumnIndex(DatabaseHelper.COLUMN_ROOT_CHECK)));
                        MyList.add(" COLUMN_RESOL:  " + userCursor.getString(userCursor.getColumnIndex(DatabaseHelper.COLUMN_RESOL)));
                    }
 
                }
                // getListView().setOnItemLongClickListener(this);
                sqlHelper.database.close();
                userCursor.close();
 
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
 
        ArrayAdapter mAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, MyList);
        mList.setAdapter(mAdapter);
        mList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
 
                if (MyList.size() < 10){
                    Intent MyIntent = new Intent(MainActivity.this, ImageSoSO.class);
                    MyIntent.putExtra(EXTRA_MESSAGE, MyList.get(position));
                    startActivity(MyIntent);}
                else {
                    // MyList.clear();
                    Toast toast = Toast.makeText(getApplicationContext(),
                            "Все же утоните запрос", Toast.LENGTH_SHORT);
                    toast.show();
                }
              //  Log.i(TAG, "Значение из массива" + MyList.get(position));
              //  Log.v(TAG, "Запись = " + position + ", id = " + id);
              //  Log.i(TAG, "Значение из массива CREAT" + MyList.size());
           }
        });
        return mList;
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.10.2015, 14:58
Ответы с готовыми решениями:

Восстановление позиции ListView по возвращении из другого Activity
Доброго времени суток. Имеется activity с ListView, заполняемого из базы...

Приложение зависает, если свернуть и развернуть Activity или перейти на другую Activity
У меня в параллельном потоке происходит куча apply() Решение использовать...

Изменение layout-элементов одного activity из другого activity
Здравствуйте! Я хочу изменить размер или цвет текста TextView в одном...

Android - Передача данных с одного Activity на другое Activity
Здравствуйте , возникла необходимость получения числовых (int и float ну или...

Как из одного Activity перенести фотку в другое Activity?
Собственно необходимо отобразить фотографию в activity2, которую загрузили в...

2
Spelcrawler
531 / 501 / 113
Регистрация: 12.03.2014
Сообщений: 1,666
Завершенные тесты: 1
22.10.2015, 15:59 2
Russtem81, ну видимо во втором случае активити не успела еще из памяти выгрузиться потому и не восстанавливается.
1
Russtem81
3 / 3 / 1
Регистрация: 15.10.2015
Сообщений: 59
22.10.2015, 17:55  [ТС] 3
Сделал новую активность(Black Activity от Android Studio) на ней все заработало.
Проверил в майнфесте у активности с которой криво проходил возврат стоял родитель MainActivity(моя основная) может как то с этим было связанно или эмулятор глючил.

В второй активности планируется показывать конкретный датчик на которой ругается контроллер, вот тут на данном этапе уже каша как это лучше реализовать. Вариантов можно предположить много для решения этой задачи.
1. Организовать справочник слов в соответствии с которыми подгружать соответствующий кусок фото схемы из ресурсов.
2. Загрузить детализированную схему с спецификацией(датчиков с одинаковыми названиями нет) распознавать изображение, выделять координаты на изображении и в результате подсвечивать. Самый крутой вариант, не знаю возможно это или нет.
3. Самое простое загружать большое масштабируемое изображение чтоб человек сам искал расположение датчика, но и это как сделать пока не знаю, минимальный размер изображения на котором можно все найти 1257*1522.


Конечная цель, написать программу с помощью которой человек с улицы сможет легко выявлять неисправность устройство в котором более сотни датчиков оптических пар и прочих гадостей. Сама железка состоит из блоков их всего 10.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.10.2015, 17:55

Вызвать из одной activity функцию другой activity
вызвать из одного activity функцию другой activity Подскажите, можно ли такое...

Из одного Activity получить значение другого Activity
Запускаю активити: public class MainActivity extends Activity { ... ......

Как добавить cardview в activity с другой activity?
У меня есть активность(1), куда нужно добавить cardview. в этой же активности...


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

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

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