Как запустить новую активность в TabHost - PullRequest
0 голосов
/ 07 сентября 2011

Я использую TabHost для отображения 3 вкладок в моем приложении (панель инструментов, заказы и клиенты).Каждый из них представляет собой отдельное действие, содержащее ListView, и работает правильно.Все они имеют систему «бесконечной прокрутки», как в Android Marketplace, и сохраняют свои позиции в ListView при переключении между различными вкладками.Когда вы нажимаете на элемент в ListView, он в настоящее время загружает новый полноэкранный режим Activity и покидает TabHost.Я хотел бы загрузить эти действия в TabHost (например, нажмите на конкретного клиента в списке клиентов, который затем приведет вас к просмотру сведений о клиентах, оставаясь при этом на вкладке клиентов. Затем можно вернуться к списку клиентов без потериВаша позиция / перезагрузка списка).Я читал о ActivityGroup и ViewFlipper, но я изо всех сил пытаюсь выяснить, как добиться желаемого поведения.

1 Ответ

0 голосов
/ 07 сентября 2011
mTabHost = getTabHost();
mTabHost.setOnTabChangedListener(this);
TabSpec spec;
String Tab_title3 = "NameofTab";


TextView txtTabInfo3 = new TextView(this);
    setUpTextView(txtTabInfo3);
    txtTabInfo3.setText(Tab_title3);

intent = new Intent();
intent.setClass(this, YourClass.class);
spec = mTabHost.newTabSpec(Tab_title3).setIndicator(txtTabInfo3)
            .setContent(intent);
    mTabHost.addTab(spec);

Так что, если YourClass является ListActivity, внутри вы можете поместить всплывающее диалоговое окно, например, с другим списком с данными клиента, а затем вы можете добавить кнопку закрытия.Для вашего диалога вы можете настроить пользовательский вид списка с помощью адаптера или чего-то еще.Например, в методе:

buildMyDialog(){
  final Dialog dialog = new Dialog(this);
  lv2=new ListView(this);
  lv2.setAdapter(mAdapter2);
   //....
 final Button cancelButton=new Button(this);
  dialog.setContentView(lv2);

  dialog.show(

}

...