2010-06-21 58 views
2

在Android中,TabHost对象以一种内嵌方式呈现活动。我想知道是否有任何方法可以做类似的事情,而不使用tab主机。假设,我想要一个工具栏或滑动抽屉,它允许我以与TabHost相同的方式在这些活动之间切换。换句话说,我想内嵌呈现一个活动的另一个活动的里面,有点像对活动的iframe ...Android Inline Activity

回答

0

基本上你需要LocalActivityManagerActvityGroup类玩法:

假设你有仪表板类:

public class Dashboard extends ActivityGroup implements View.OnClickListener { 
    super.onCreate(savedInstanceState); 

    //Your view with the activity launcher buttons on the bottom for instance 
    setContentView(R.layout.frame); 

    @Override 
    public void onClick(View v) { 


     Intent intent = new Intent().setClassName(context,YourActivity.class); 

     intent.setAction(Intent.ACTION_VIEW); 


     LocalActivityManager localActivityManager = getLocalActivityManager(); 


     final Window w = localActivityManager.startActivity("uniqueID", intent); 
     final View wd = w != null ? w.getDecorView() : null; 

      //the content of your activity goes here 
     FrameLayout frameLayout = (FrameLayout) findViewById(R.id.tabcontent); 
     frameLayout.removeAllViews(); 
     frameLayout.addView(wd); 
    } 

} 
+0

这听起来很有前途,我会给你一个旋风,让你知道它是怎么回事......谢谢! – Ben 2010-06-21 22:03:12

0

这可能不完全加载单独的活动,但是......

相反的活动,您可以从用户的角度通过在单个活动中动态加载布局来实现该功能。这样你可以有一个滑块并根据需要更新屏幕上的布局。

+0

是的,但后来我得有逻辑为每个视图。假设我有10个不同的视图,现在突然间我必须有一个大的开关语句来确定要显示哪个布局以及所有要呈现的逻辑。把每个人都纳入自己的活动将是一个很好的方式来分离出自己的逻辑地方的东西.​​..基本上就像TabHost的工作方式...除非不使用tabhost ... :) – Ben 2010-06-21 18:06:11

+0

哈哈,好吧,它会无论你做什么都是黑客行为,因为最佳做法是使用提供的标签容器来保持应用的外观和感觉一致。你有没有理由不能使用TabHost?或者你是否创建了替代TabHost的唯一目的是创建替代方案? – 2010-06-21 18:35:26

+0

好吧,我们希望能够在视图之间“滑动”,而不必占用与标签视图相关的房地产。 – Ben 2010-06-21 19:54:22

0

否,甚至不希望使用标签中的活动来支持视图。您可以在此处或在Android谷歌组上进行其他搜索以了解原因。

如果您必须有独立的活动,您应该以正确的方式使用Intents启动它们,并让Android管理其生命周期或使用每个选项卡的视图制作标签。