вам нужно использовать метод onSavedInstanceState, чтобы сохранить все значения для его параметра, который имеет связку
@Override
public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
super.onSaveInstanceState(outState, outPersistentState);
outPersistentState.putBoolean("key",value);
}
и использовать
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
savedInstanceState.getBoolean("key");
}
, чтобы извлечь и установить значение на просматривать объекты он будет обрабатывать поворот экрана
это должно работать в linux / macosx, версия для Windows должна использовать Get / Set ConsoleMode
#include <stdio.h>
#include <stdlib.h>
#include <termios.h>
int
main(int argc, char **argv)
{
struct termios oflags, nflags;
char password[64];
/* disabling echo */
tcgetattr(fileno(stdin), &oflags);
nflags = oflags;
nflags.c_lflag &= ~ECHO;
nflags.c_lflag |= ECHONL;
if (tcsetattr(fileno(stdin), TCSANOW, &nflags) != 0) {
perror("tcsetattr");
return EXIT_FAILURE;
}
printf("password: ");
fgets(password, sizeof(password), stdin);
password[strlen(password) - 1] = 0;
printf("you typed '%s'\n", password);
/* restore terminal */
if (tcsetattr(fileno(stdin), TCSANOW, &oflags) != 0) {
perror("tcsetattr");
return EXIT_FAILURE;
}
return 0;
}
Вы можете использовать библиотеку ncurses для чтения со стандартного ввода без вывода результатов на экран. (Вызовите noecho ()
, прежде чем получать какие-либо данные). Библиотека существует уже много лет и работает на самых разных платформах (версию для Windows можно найти здесь )
Согласно документации Университета Милуоки она устарела, потому что:
Функция
getpass ()
не является потокобезопасной, потому что она манипулирует состояние глобального сигнала.Функция
getpass ()
планируется исключить из будущей версии спецификации X / Open CAE.
В Windows вы, вероятно, можете использовать API SetConsoleMode
, описанный здесь .