Проблемы с Android FragmentActivity и вкладками - PullRequest
2 голосов
/ 30 марта 2012

Я успешно преобразовал свою TabActivity в FragmentActivity, причем содержимое вкладки - это фрагменты. У меня две проблемы:

  1. Каждая из моих вкладок содержит EditText's. Когда я изменяю значение EditText на TAB1, переключаюсь на TAB2, а затем снова переключаюсь на TAB1, значение EditText сбрасывается.

  2. Если начать новое действие с одного из фрагментов моей вкладки, а затем вернуться к существующему действию FragmentActivity, содержимое вкладки исчезнет. Первоначально у меня была эта проблема при использовании TabHost, поэтому я потратил время, чтобы преобразовать все в фрагменты ...

Что касается # 1, я предполагаю, что проблема связана с saveInstanceState. Я точно следовал примеру Google , используя в onCreate () моего FragmentActivity следующее:

initialiseTabHost(savedInstanceState);
if (savedInstanceState != null) {
    mTabHost.setCurrentTabByTag(savedInstanceState.getString("tab"));
}

Кроме того, вот мой метод onSaveInstanceState () моей FragmentActivity:

protected void onSaveInstanceState(Bundle outState) {
    outState.putString("tab", mTabHost.getCurrentTabTag());
    super.onSaveInstanceState(outState);
}

Вот как выглядит фрагмент моей вкладки:

public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    if (container == null) {
        return null;
    }

    return (LinearLayout) inflater.inflate(R.layout.priority_boxes_tab,
            container, false);
}

public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    setRetainInstance(true);

    ArrayList<Supply> list = new ArrayList<Supply>();

    // More code here

}

Должен ли я делать что-то еще? У меня есть около 15 полей EditText на экране. Нужно ли каким-то образом сохранять все эти значения и устанавливать их так, чтобы в следующий раз поля были заполнены этими значениями?

Что касается # 2, я понятия не имею, что еще я могу сделать. У кого-нибудь есть предложения?

Спасибо!

1 Ответ

2 голосов
/ 02 апреля 2012

Я могу ответить только на первый вопрос. Да, вы должны сохранить содержимое каждого текста редактирования вручную, если вы хотите, чтобы он был восстановлен. Если их не нужно сохранять при каждом запуске приложения, сохраните их в комплекте в onSaveInstanceState и восстановите в onCreate и / или onRestoreInstanceState. Если вам нужны постоянные значения, используйте SharedPreferences или запишите их в другой файл или базу данных. Предпочтения, вероятно, самые простые.

...