Как отображать активность только один раз?

Я разрабатываю приложение для викторины. Ситуация такова:

  • Пользователь выбирает викторину, касаясь кнопки, которая открывает новую активность. Внутри этого действия пользователь должен что-то написать в TextView, а затем нажать другую кнопку, чтобы увидеть, правильный ли текст. Если это правильно, то открывается еще одна последняя активность.

  • В тот момент, когда пользователь возвращается к основной деятельности, где он должен выбрать викторину, если он выбирает ту же викторину, он должен снова записать ответ.

Мне нужно найти способ сохранить ответ, чтобы приложение больше не отображало действие, в котором он должен записать ответ. Он должен немедленно перейти к последнему действию. Я знаю, что могу управлять этим с помощью SharedPreferences, но я не знаю, как это настроить.


person Giulio Tedesco    schedule 21.01.2014    source источник
comment
Вы хоть пробовали? В документах есть хороший пример, который должен как минимум чтобы вы начали, вы можете опубликовать свой код здесь, объясняя проблему   -  person codeMagic    schedule 22.01.2014
comment
Этот вопрос кажется не по теме, потому что, похоже, не предпринимается никаких попыток решить проблему.   -  person codeMagic    schedule 22.01.2014
comment
Это всего лишь один ответ, который нужно запомнить?   -  person Michael Yaworski    schedule 22.01.2014
comment
Извините, это было поздно ночью :( Я попробовал с общими настройками и внутренней памятью, но это не сработало :(   -  person Giulio Tedesco    schedule 22.01.2014


Ответы (1)


Сначала добавьте эти методы, используемые для записи и чтения из SharedPreference< /кбд>:

public String getAnswer()
{
   SharedPreferences sp = getSharedPreferences("prefName",0);
   return sp.getString("myAnswer1","TheDefaultValueIfNoAnswerHasBeenSet");
}

public void setAnswer(String theAnswer)
{
   SharedPreferences.Editor editor = getSharedPreferences("prefName",0).edit();
   editor.putString("myAnswer1", theAnswer);
   editor.commit();
}

Затем, когда пользователь вернется к основной деятельности (вы можете использовать onBackPressed, чтобы проверить, когда активность закрывается), вы можете написать ответ на предпочтение.

Например, в вашей викторине:

@Override
public void onBackPressed() {
    setAnswer(/* the String answer the user currently has */);
}

И затем, когда вы открываете свою викторину, вы можете читать из SharedPreference.

Например, в вашем методе onCreate:

String previousAnswer = getAnswer();

// check to see if the answer is not "TheDefaultValueIfNoAnswerHasBeenSet"
// or whatever you set the default value to be

// set the answer in the quiz to be previousAnswer
person Michael Yaworski    schedule 21.01.2014
comment
Большое спасибо .. Вы ответили на мой глупый (и не по теме) вопрос :( извините :( - person Giulio Tedesco; 22.01.2014
comment
В любом случае, что я должен написать в своем методе onCreate после String previousAnswer = getAnswer(); оператор if else? Спасибо - person Giulio Tedesco; 22.01.2014
comment
@ user3208166 Ваш вопрос не глуп. Это хорошо. И вы должны установить текст EditText как предыдущий ответ. Скажи мне, если ты все еще не понимаешь. Я не уверен, насколько вы новичок в Android. - person Michael Yaworski; 22.01.2014
comment
Да, я новичок :) я решил проблему благодаря этой теме: заголовок stackoverflow.com/questions/9964480/ Спасибо! Теперь я работаю над кнопкой сброса, чтобы сбросить все данные, если пользователю нужно перезапустить игру: P - person Giulio Tedesco; 23.01.2014