2014-09-03 71 views
1

我想知道是否有一種方法可以啓動活動,而不是在tabhost選項卡上啓動片段。在tabhost中啓動活動而不是片段

我想要如何啓動一個活動,用戶可以寫一篇文章,然後保存,爲什麼我想要這個?因爲當我想要編輯時,我會發起一個活動,而我不想讓2個班級做同樣的事情,但有點不同,而且底部的標籤佔用了太多的空間,使我的表單空間變得很小。

我的代碼實際上看起來像

@Override 
protected void onCreate(Bundle savedBundleState) { 
    mTabHost.setup(getBaseContext(), getSupportFragmentManager(), R.id.realtabcontent); 
    // This starts the HomeFragment 
    mTabHost.addTab(newTabSpec("tabHome", R.layout.tab_home), HomeFragment.class, null); 
    // This throws an error 
    mTabHost.addTab(newTabSpec("tabPost", R.layout.tab_post)); 
    mTabHost.setOnTabChangedListener(this); 
} 

private TabSpec newTabSpec(String tag, int layout) { 
    View view = getLayoutInflater().inflate(layout, null); 
    return mTabHost.newTabSpec(tag).setIndicator(view); 
} 

@Override 
public void onTabChanged(String tabId) { 
    if (tabId == "tabAddPublication") { 
     startActivity(new Intent(getBaseContext(), PostActivity.class)); 
    } 
} 

我得到這個錯誤

you must specify a way to create a tab content 

問候

+0

我可能聽起來很愚蠢,但是你能不能從片段中爲該活動製作一個'Intent'?我不確定啓動一個'Activity'而不是'Fragment'。 – 2014-09-03 22:34:05

+0

我只是想啓動一個活動,沒有其他動作,其類似於只需點擊一個標籤,並在碎片容器上不做任何事情,只啓動活動。不知道如果可能或如何 – norman784 2014-09-03 22:57:37

回答

1

Documents

公共TabHost.TabSpec setContent(意向意圖) 指定用作啓動活動作爲選項卡內容的意圖。

您需要設置內容TabSpec

Intent postActivityIntent = new Intent(this, PostActivity.class); 
mTabHost.newTabSpec(tag).setContent(postActivityIntent); 

希望這有助於。

+0

似乎Im在這裏被迫使用片段,在Activity,ActvityGroup或TabActivity中使用TabHost的所有方法都被棄用,所以它將很快被移除,該死的,我討厭片段。但我會接受你的回答,因爲它是正確的 – norman784 2014-09-04 18:35:59

+0

通過看到你的問題本身,可以說你討厭碎片。 :D :) – 2014-09-04 18:50:43

+0

我不喜歡你用碎片四處遊玩的方式,在使用活動時,我的代碼仍然非常乾淨,在啓動和活動時或者當你想要讀取一些你需要調用的資源時,你不能使用它getActivity()。getResources()...你需要寫更多,而不是寫少!不知道谷歌工程師是否喜歡這種方式或蘋果的方式,你的代碼也需要很好;) – norman784 2014-09-05 19:47:41