0

Я разрабатываю приложение, в котором я создаю treeView с некоторыми данными. Поскольку процесс довольно длинный, мне хотелось бы сохранить встроенный treeView (LinearLayout) каким-то образом, чтобы восстановить его при вызове операции.Добавить LinearLayout в комплекте

Назови свою деятельность с древовидной структурой Т. У меня есть Home-> T-> Ресурс и ресурс Я возвращаюсь домой. Я реализовал onSaveInstance в T, так что я могу сэкономить в пакете переменные, которые мне нужны, когда из ресурса я вернусь. Home и T уничтожены, но проблема в том, что я не могу сохранить все linearLayout как монолитную информацию в расслоение, LinearLayout кажется нецелесообразным.

Итак, подведем итог мой цикл:

Home-->T-->Resouce-->Home (T is destroyed and onSaveInstance is executed)-->T (I want to avoid the rebuilding of the LinearLayout). 

Многие Thnaks

ответ

4

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

Если вам удалось сохранить и загрузить LinearLayout обратно, вы получите много просочившихся окон и другие сбои, включая NullPointerExceptions и Dead Objects.

Вы должны всегда позволять Android воссоздавать макет для Activity, если Activity уничтожен и снова запущен.

0

Почему бы не сохранить элементы ресурса «treeView T» в некоторой упорядоченной структуре данных, такой как ArrayList, HashMap и т. Д. Сохраните эту структуру данных в SharedPreference/Bundle и т. Д. При создании вида активности, динамически создавайте LinearLayout, читая элементы из ранее сохраненного SharedPreference/Bundle.

/* Posting an example code below */ 

LinearLayout linLayout = new LinearLayout(this); 

View childView = null; // read this childView in a sequential manner from the sharedPreference/Bundle 

linLayout.addView(childView); 
+0

Я строю древовидную структуру рекурсивным образом, основным объектом является класс Resource R. Вы имеете в виду, что я должен сохранить только «главный отец» R дерева Tree? Если да, почему arrayList только для одного элемента? –

+0

Метод, который я предложил, не включает в себя «фундаментальное R». На самом деле вам даже не понадобится использовать «R», так как мы будем динамически создавать экран Activity. Как только наш основной вид, то есть linLayout (как указано в приведенном выше коде, который соответствует treeView T), вместо выполнения setContentView (R.XXX) все, что вы делаете, это setContentView (linLayout). Вы можете обратиться к http://stackoverflow.com/questions/4979212/programmatically-creating-a-relativelayout-in-android для получения дополнительной информации о создании макетов в android без использования «R» или любых файлов xml компиляции. – Sriram

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