TabActivity. Activity, как содержимое вкладки
TabActivity. Activity, как содержимое вкладки
Привет всем!
Смотрел урок http://startandroid.ru/ru/uroki/vse-uro ... ladki.html
Хотел сделать таким методом, но public class MainActivity extends TabActivity устаревший метод.
Вопрос:
1) Как это можно реализовать по другому ??
2) Если все же реализую методом TabActivity то приложение будет работать на устройствах с версией Андроид 4.0.х - 4.х.х
Смотрел урок http://startandroid.ru/ru/uroki/vse-uro ... ladki.html
Хотел сделать таким методом, но public class MainActivity extends TabActivity устаревший метод.
Вопрос:
1) Как это можно реализовать по другому ??
2) Если все же реализую методом TabActivity то приложение будет работать на устройствах с версией Андроид 4.0.х - 4.х.х
Re: TabActivity. Activity, как содержимое вкладки
1) http://startandroid.ru/ru/uroki/vse-uro ... pisok.html, если нужна поддержка старых устройств, то можно использовать библиотеку SharlockActionBar или AppCompat
2) Да, работать будет.
2) Да, работать будет.
Re: TabActivity. Activity, как содержимое вкладки
klblk писал(а):1) http://startandroid.ru/ru/uroki/vse-uro ... pisok.html, если нужна поддержка старых устройств, то можно использовать библиотеку SharlockActionBar или AppCompat
2) Да, работать будет.
то есть если я буду использовать TabActivity то не будут поддерживаться устройства со старой версией андроид ?
Re: TabActivity. Activity, как содержимое вкладки
Будут какие проблемы если использовать TabActivity? или где то коряво работать будет ?)
Re: TabActivity. Activity, как содержимое вкладки
Да не будет никаких проблем, это вы уже сами для себя решайте, стоит ли забивать голову устаревшими приемами и методами проектирования или сразу учиться использовать современные средства.skull писал(а):Будут какие проблемы если использовать TabActivity? или где то коряво работать будет ?)
Re: TabActivity. Activity, как содержимое вкладки
TabActivity везде работает, ActionBar'а нет в старых версиях.skull писал(а):klblk писал(а):1) http://startandroid.ru/ru/uroki/vse-uro ... pisok.html, если нужна поддержка старых устройств, то можно использовать библиотеку SharlockActionBar или AppCompat
2) Да, работать будет.
то есть если я буду использовать TabActivity то не будут поддерживаться устройства со старой версией андроид ?
Re: TabActivity. Activity, как содержимое вкладки
Ребята спасибо за ответы!
В TabActivity можно так:
TabHost tabHost = getTabHost();
TabHost.TabSpec tabSpec;
tabSpec = tabHost.newTabSpec("tag1");
tabSpec.setIndicator("Вкладка 1");
tabSpec.setContent(new Intent(this, listlayout.class));
tabHost.addTab(tabSpec);
а как быть с ActionBar ?
пробую так:
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
Log.d("e", "selected tab: " + tab.getText());
if (tab.getPosition()==1){
Intent intent = new Intent(this, listlayout.class);
startActivity(intent);
//setContentView(R.layout.list_layout);
}
но layout грузится а ActionBar исчезает
В TabActivity можно так:
TabHost tabHost = getTabHost();
TabHost.TabSpec tabSpec;
tabSpec = tabHost.newTabSpec("tag1");
tabSpec.setIndicator("Вкладка 1");
tabSpec.setContent(new Intent(this, listlayout.class));
tabHost.addTab(tabSpec);
а как быть с ActionBar ?
пробую так:
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
Log.d("e", "selected tab: " + tab.getText());
if (tab.getPosition()==1){
Intent intent = new Intent(this, listlayout.class);
startActivity(intent);
//setContentView(R.layout.list_layout);
}
но layout грузится а ActionBar исчезает
Re: TabActivity. Activity, как содержимое вкладки
Загрузите проект с примерами из Support7Demos (расположена в <sdk>/extras/android/support/samples/Support7Demos/)
Подключите к нему все три библиотеки (appcompat gridlayout mediarouter) как описано в Adding libraries with resources по этому адресу http://developer.android.com/tools/supp ... setup.html и тщательно разберитесь как там и что работает.
Можно, конечно, не подключать библиотеки gridlayout и mediarouter, а подключить только appcompat, но тогда нужно удалить из примера Support7Demos все что к ним относится.
Но прежде всего, вам нужно освоить работу с фрагментами, рекомендую начать с этого, а потом уже переходить на все остальное.
Тогда вы поймете что
"Intent intent = new Intent(this, listlayout.class);
startActivity(intent);" в вашем коде нужно заменить на что-то другое
Считайте, что работа с фрагментами это базовые навыки, которыми необходимо овладеть на уровне понимания.
Подключите к нему все три библиотеки (appcompat gridlayout mediarouter) как описано в Adding libraries with resources по этому адресу http://developer.android.com/tools/supp ... setup.html и тщательно разберитесь как там и что работает.
Можно, конечно, не подключать библиотеки gridlayout и mediarouter, а подключить только appcompat, но тогда нужно удалить из примера Support7Demos все что к ним относится.
Но прежде всего, вам нужно освоить работу с фрагментами, рекомендую начать с этого, а потом уже переходить на все остальное.
Тогда вы поймете что
"Intent intent = new Intent(this, listlayout.class);
startActivity(intent);" в вашем коде нужно заменить на что-то другое
Считайте, что работа с фрагментами это базовые навыки, которыми необходимо овладеть на уровне понимания.
Re: TabActivity. Activity, как содержимое вкладки
Пробовал работать с фрагментами, конечно может я что то не правильно делаю, но при переключении между табами они возвращаются в исходное состояние .)Viewer писал(а):Загрузите проект с примерами из Support7Demos (расположена в <sdk>/extras/android/support/samples/Support7Demos/)
Подключите к нему все три библиотеки (appcompat gridlayout mediarouter) как описано в Adding libraries with resources по этому адресу http://developer.android.com/tools/supp ... setup.html и тщательно разберитесь как там и что работает.
Можно, конечно, не подключать библиотеки gridlayout и mediarouter, а подключить только appcompat, но тогда нужно удалить из примера Support7Demos все что к ним относится.
Но прежде всего, вам нужно освоить работу с фрагментами, рекомендую начать с этого, а потом уже переходить на все остальное.
Тогда вы поймете что
"Intent intent = new Intent(this, listlayout.class);
startActivity(intent);" в вашем коде нужно заменить на что-то другое
Считайте, что работа с фрагментами это базовые навыки, которыми необходимо овладеть на уровне понимания.
Re: TabActivity. Activity, как содержимое вкладки
Я могу только предполагать:Пробовал работать с фрагментами, конечно может я что то не правильно делаю, но при переключении между табами они возвращаются в исходное состояние .)
Возможно вы при выборе вкладки каждый раз создаете новый фрагмент, вместо того, чтобы использовать тот, что был использован ранее. Обычно новый фрагмент создается и добавляется только при начальной инициализации, при добавлении фрагмента в FragmentManager ему можно присвоить тэг, по этому тегу всегда можно проверить есть ли сохраненный фрагмент во FragmentManager с помощью findFragmentByTag и если он есть, то его продолжают использовать, если findFragmentByTag возвращает null , то создается новый фрагмент. Либо нужно создавать все фрагменты для табов и сохранять ссылки на них, а потом можно будет только добавлять нужный фрагмент в FragmentManager, не забыв удалить старый. У ActionBar.TabListener есть соответствующие методы обратного вызова :
onTabSelected - в нем добавляем фрагмент соответствующий данной вкладки в контейнер, onTabUnselected - здесь удаляем фрагмент из контейнера.
Возможно вы неправильно обрабатываете жизненный цикл фрагмента и не сохраняете состояние своих данных. Когда фрагмент перестает быть виден на экране, все его состояние (данные) должно быть сохранено, аналогично как это делается и для Activity (смотрите уроки про разворот экрана и пр.), после того, как фрагмент вновь появляется на экране вся его иерархия View будет создана заново и нужно заполнить её сохраненными данными. Более того фрагмент имеет даже больше возможностей сохранять свое состояние установкой setRetainInstance(true), но это сделано больше для ускорения и быстрой загрузки фрагментов, в любом случае нужно "научить" фрагмент сохраняться через onSaveInstanceState , а потом смотреть как оптимизировать загрузку фрагмента с помощью установки setRetainInstance(true)