Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

При открытии программы узнать данные, которые хранятся в второй форме Activity, не переходя на неё - Программирование Android

28.05.2016, 16:53. Просмотров 251. Ответов 5
Метки нет (Все метки)

Как на Android Studio передать информацию? Нужны при открытии программы узнать данные которые хранятся в второй форме Activity, не переходя на неё. Пробовал делать так:
Отправка даннцых из Радиобутона на главную форму.
Java
1
2
3
4
5
6
7
 butt2_1 = (RadioButton) findViewById(R.id.radioButton1);//сохранение настройек
 
        Intent intent = new Intent(Main2Activity.this, MainActivity.class);
        if(mSet.contains(BOOL_CHECK_RADIOBUTTON1)){butt2_1.setChecked(mSet.getBoolean(BOOL_CHECK_RADIOBUTTON1, false));}
        boolean checked = butt2_1.isChecked();
        intent.putExtra("get_text",checked);
        startActivity(intent);
Прием данных на главной форме
Java
1
2
3
4
5
6
tt= (TextView) findViewById(R.id.textView);
        Intent intent = getIntent();
        checked = intent.getBooleanExtra("get_text",checked);
        if(checked == true) {tt.setText("Ok");}
        else {tt.setText("Net");}
    }
И надо узнать наша радиобуттон активен или нет.
Когда перехожу на вторую форму, тут же меня она возращает на главную форму, и тогда показывает результат.
Как можно сделать типо так как на с++ .Пример:Bool buff = Form2->RadioButton->Checket;
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.05.2016, 16:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос При открытии программы узнать данные, которые хранятся в второй форме Activity, не переходя на неё (Программирование Android):

При попытке открыть второй и третий Activity происходит завершение работы программы - Программирование Android
Подскажите где ошибка. В программирование андроида пару дней. При попытке открыть второй и третий Activity происходит завершение работы...

Ошибка при открытии новой activity - Программирование Android
Здравствуйте, уважаемые программисты. У меня возник вопрос: пишу приложение под Android, которое , при нажатии на кнопку, получает от...

Таймер запускается не при открытии второй формы, а при запуске программы - Delphi
подскажите пожалуйста, у меня на второй форме, форма приветствия, я на нее забросил таймер, но проблема в том, что таймер запускается не...

Выборка записей которые не хранятся во второй таблице - SQL Server
Есть таблицы А и В, связанные связью 1-много. Как вывести записи из таблицы А которые не находятся в таблице В. Т.е.: таблица А: фио...

Вывести во View данные, которые хранятся в myTable - C# MVC
Всем доброго времени суток, столкнулся с такой проблемой заполнил в проекте на MVC4 DataTable данными DataTable myTable = new...

Где хранятся данные которые записываются в RecordStore - Java ME
Как заполнить RecordStore перед первым запуском MIDLet'a? Т.е. чтобы при запуске программы в хранилище уже были данные. Или для...

5
Vladimir93
41 / 41 / 5
Регистрация: 28.06.2015
Сообщений: 171
31.05.2016, 09:26 #2
Как то это сложно. А почему нельзя сохранить состояние в SharedPreferences. И при запуске первой активности проверять флаги, которые до этого сохранила вторая активность?
0
Kadagor
12 / 12 / 4
Регистрация: 17.09.2015
Сообщений: 48
31.05.2016, 11:43 #3
Если объявить переменную как public static получишь к ней доступ через Имя_класса.имя_переменой

Второй вариант: передача данных через putextra.
В первой активности запускаем вторую:
Java
1
2
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivityForResult(intent, SECOND_ACTIVITY_EXTRA);
И ждем ответа:
Java
1
2
3
4
5
6
7
8
9
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (resultCode == RESULT_OK) {
            switch (requestCode) {
                case SECOND_ACTIVITY_EXTRA:
                    checked = data.getBooleanExtra(SecondActivity.EXTRA_ANSWER);
                    break;
            }
        }
    }
Во второй отвечаем:
Java
1
2
3
Intent data = new Intent();
data.putExtra(EXTRA_ANSWER,butt2_1.isChecked());
setResult(RESULT_OK, data);
Оба варианта актуальны если активность с настройками перед этим запускалась. Если нет, от чего зависит дефолтное состояние переменной? Скорее всего ее состояние все равно будет хранится либо в базе, либо в SharedPreferences?
Соглашусь с Vladimir93, что SharedPreferences проще всего.

Добавлено через 6 минут
В MainActivity:
Java
1
private final int SECOND_ACTIVITY_EXTRA = любое_целое;
Добавлено через 2 минуты
В SecondActivity:
Java
1
 public static final String EXTRA_ANSWER = "имя_пакета.имя_класса.имя_переменной";
1
Drago56
0 / 0 / 0
Регистрация: 17.04.2011
Сообщений: 37
31.05.2016, 15:26  [ТС] #4
Спасибо за ответы сделал через SharedPreferences.
Еще вопрос как правильно считать данные из SharedPreferences в потоке мне приходит с датчика время и его надо каждую секунду выводить в другом Activity.Я так понял это же через отдельный поток делать надо?
Пробывал так:
Java
1
2
3
4
5
6
7
   new Thread(new Runnable() {
            public void run() {
                if(mSet.contains(TIME)) {buf_dat3 = mSet.getString(TIME, "");}
                time.setText(buf_dat3);
 
            }
        }).start();
Он считывает 1 раз и выводит.

Добавлено через 13 минут
Я неделю всего программирую на android studio,мало чего знаю. в моем решении действительно метод:Если объявить переменную как public static получишь к ней доступ через Имя_класса.имя_переменой...оказался проще т.к эти данные временные и мне не надо их сохранять...только как постоянно выводить в другом activity их?

Добавлено через 12 минут
при вводе такого кода он закрывает программу
Java
1
 if(MainActivity.split_buff2[0].equals("5555")){butt2_4.setChecked(true);}
Добавлено через 36 минут
1 раз выводит скорее всего что bluetooth соединение отключается почему то при переходе на др Actyvity
0
Kadagor
12 / 12 / 4
Регистрация: 17.09.2015
Сообщений: 48
31.05.2016, 16:15 #5
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Drago56 Посмотреть сообщение
Еще вопрос как правильно считать данные из SharedPreferences
Объявляем:
Java
1
2
private SharedPreferences mySharedPreferences;
public static String preferenseFile = "preferense"; // имя файла где будут сохранены настройки.
Считываем данные из:
Java
1
2
3
4
5
int mode = Activity.MODE_PRIVATE;
mySharedPreferences = getSharedPreferences(preferenseFile, mode);
intVariable = mySharedPreferences.getInt("INT_VAL", 0); // 0 - значение которое вернет ф-я если переменная INT_VAL не существует
boolVariable = mySharedPreferences.getBoolean("BOOL_VAL", true);
stringVariable = mySharedPreferences.getString("STR_VAL","");
Сохраняем:
Java
1
2
3
SharedPreferences.Editor editor = mySharedPreferences.edit();
editor.putBoolean("fViewImage", fViewImage);
editor.apply();
Цитата Сообщение от Drago56 Посмотреть сообщение
эти данные временные и мне не надо их сохранять
SharedPreferences - удобный инструмент чтобы хранить настройки, если данные постоянно меняются он здесь не актуален
Цитата Сообщение от Drago56 Посмотреть сообщение
как постоянно выводить в другом activity их?
Как вариант установим таймер с обновлением в 1 сек.
Java
1
2
3
4
5
6
7
8
9
int timeToReset = 1;
ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
        service.schedule(new Runnable() {
            @Override
            public void run() {
                // Здесь читаем данные и что-то с ними делаем
                time.setText(buf_dat3);
            }
        }, timeToReset, TimeUnit.SECONDS);
Добавлено через 8 минут
Упс, этот счетчик сработает только раз на 1 сек.
Используй:
Java
1
service.scheduleAtFixedRate(new Runnable() { ... }, 0, 1, TimeUnit.SECONDS);
1
Drago56
0 / 0 / 0
Регистрация: 17.04.2011
Сообщений: 37
31.05.2016, 18:15  [ТС] #6
Что то не получается,такое чувство что blutooth перестает принимать данные когда я ухожу с главной Activity.Хотя я ставил глобальные переменные.И когда возвращаюсь опять на главную форму данные снова начинаются приниматься

Добавлено через 1 минуту
Или неужели придется делать настраивать luetooth соединение на др форме?
0
31.05.2016, 18:15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.05.2016, 18:15
Привет! Вот еще темы с ответами:

Разработать класс комплексное число в котором данные хранятся в алгебраической и тригонометрической форме - C#
Спасибо

в одной форме ввожу данные об ученике выводится результат со второй формы но не выводит данные с перовой форм - Delphi
Тут такая проблема в одной форме ввожу данные об ученике на второй форме есть программа для тестирования в конце выводится результат со...

Найти участок памяти где содержится dll и прочитать данные которые хранятся в определенных адресах - C#
Подскажите у меня есть процесс но в нем еще есть подгружаемые dll мне нужно в процессе найти эту участок памяти где содержится dll и...

Как узнать, изменилась ли запись при выходе из неё. - MS Access
Всем привет! При выходе из формы (либо одиночная форма с одной записью либо ленточная форма с множеством записей) надо проверить,...


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

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

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