2012-03-30 2 views
2

Я успешно конвертировал свою TabActivity в FragmentActivity, причем содержимое вкладки было Fragments. У меня два вопроса:Проблемы с Android FragmentActivity и вкладки

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

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

Что касается № 1, я предполагаю, что этот вопрос имеет отношение к savedInstanceState. Я последовал за Google, example точно, используя следующие в 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, я не знаю, что еще я могу сделать. У кого-нибудь есть предложения?

Спасибо!

ответ

2

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

+0

Я попробую это, спасибо. Легче было использовать TabHost, который запоминает значения для вас на каждой вкладке, но теперь он устарел, поэтому не имеет смысла использовать. К счастью, у меня есть статическое количество полей EditText на каждой вкладке. Это затруднилось бы с динамическим числом полей EditText, однако ... – littleK

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