2010-06-21 61 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管理其生命週期或使用每個選項卡的視圖製作標籤。