2013-12-13 2 views
0

Я знаю, что когда пользователь нажимает кнопку «Назад», вы не должны вызывать saveoninstance.Сохраните приложение, когда пользователь выйдет с помощью кнопки возврата

У меня есть макет с большим количеством edittexts, добавленными динамически пользователем, а затем пользователь может ввести текст. Мне удалось сохранить их, когда пользователь поворачивает экран с помощью saveoninstance и т. Д.

Однако я также хочу сохранить их, когда пользователь выходит из приложения с помощью кнопки «Назад», поэтому, когда приложение открывается снова, должна быть доступна кнопка «продолжить» для продолжения пользователя (что означает добавление всех текстовых полей). Я как-то знаю, как сохранять и извлекать их, но какой метод я должен использовать? Должен ли я писать файл для примера? Благодарю.

ответ

1

Когда пользователь нажал кнопку «Назад», приложение закрыто. Когда он снова открывает приложение, он запускается как новый экземпляр и не помнит, что сделал пользователь раньше. Если у вас, чтобы сохранить данные, то и их можно сохранить (например, в настройках или базы данных) в onPasue или OnDestroy

1

Если вы знаете, как сохранить и восстановить их, почему бы вам просто переопределить Назад и сохранить их.

например.

public boolean onKey(View v, int keyCode, KeyEvent event) 
    { 
    // TODO Auto-generated method stub 
    return false; 
    } 

    @Override 
    public void onBackPressed() 
    { 
    /*Your functione here to what should be done on Back Button Press event*/ 
    } 
0

То, что вы должны сделать, вы должны переопределить метод ниже в вашей деятельности,

@Override 
    public void onBackPressed() { 
     // TODO Auto-generated method stub 
     super.onBackPressed(); 
    } 

И сохранить состояние вашей деятельности в SharedPrefrence, и в следующий раз, когда вы вводите ваша активность получить значение из Sharedpreference и соответствующим образом установить состояние.

Пример,

private void SavePreferences(){ 
    SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE); 
    SharedPreferences.Editor editor = sharedPreferences.edit(); 
    editor.putBoolean("state", "true"); 
    editor.commit(); 
    } 

     private void LoadPreferences(){ 
    SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE); 
    Boolean state = sharedPreferences.getBoolean("state", false); 
    button.setEnabled(state); 
    } 

    @Override 
public void onBackPressed() { 
    SavePreferences(); 
    super.onBackPressed(); 
} 

    onCreate(Bundle savedInstanceState) 
{ 
    //just a rough sketch of where you should load the data 
    LoadPreferences(); 
} 
0

В основном разделяет предпочтение в Android используются, чтобы сохранить состояние деятельности или сохранить важные данные в рамках приложения означает, что данные сохранятся, пока приложение установлено в устройств. Совместное предпочтение также работает как сеансы, которые используются для автоматического входа в систему.

см. Это Documentation.

И вот Example.

0

Ну его довольно просто. Все, что вам нужно сделать, это:

  1. Используйте общие настройки и комплектацию.

  2. Сохранить все в onSavedInstanceState(Bundle outState)

Теперь, как вы делаете это:

  1. Переписать функцию onSavedInstanceStae(Bundle outState) и внутри него

  2. Сохранить все в общей Настройки, а затем свяжите их, и этот пакет затем автоматически отправляется в качестве параметра в вашем onCreate(Bundle bundle)

  3. Таким образом, в вашем onCreate проверьте, не bundle==null;, если не извлекаете sharedPreferences и загружаете данные так же, как вы его сохранили.

Смежные вопросы