我正在製作一個使用操作欄選項卡(我使用支持庫的操作欄)的Android應用程序,每個都與我動態生成的片段相關聯。爲什麼FragmentTransaction.hide()不會隱藏我的片段?
這個想法是通過使用FragmentTransaction.show()選擇其選項卡並使用FragmentTransaction.hide()隱藏取消選中的選項卡來顯示片段,但是當我這樣做時,「隱藏」片段會變得略顯灰色。
事實上,用戶界面通過灰顯隱藏標籤指示某些事情不同可能表明這是故意行爲,但我的印象是hide()實際上隱藏了標籤。
我在做什麼錯了,該怎麼辦?如果需要,選項卡偵聽程序的代碼如下所示:
public class VarientTabListener implements ActionBar.TabListener
{
VarientFragment Arch_Fragment;
VarientFragment Plane_Fragment;
ActionBarActivity parent;
public VarientTabListener(ActionBarActivity act)
{
parent = act;
}
@Override
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft)
{
//Work out which tab was selected
if (tab.getText() == "Arch_Tab")
{
//Create the tab if it doesn't exist
if (Arch_Fragment == null)
{
Arch_Fragment = (VarientFragment) Fragment.instantiate(parent, VarientFragment.class.getName());
ft.add(android.R.id.content, Arch_Fragment, "Arch");
}
//Otherwise show it
else
{
ft.show(Arch_Fragment);
}
}
else if (tab.getText() == "Plane_Tab")
{
if (Plane_Fragment == null)
{
Plane_Fragment = (VarientFragment) Fragment.instantiate(parent, VarientFragment.class.getName());
ft.add(android.R.id.content, Plane_Fragment, "Plane");
}
else
{
ft.show(Plane_Fragment);
}
}
}
@Override
public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft)
{
if (tab.getText() == "Arch_Tab")
{
if (Arch_Fragment != null)
{
//Hide the unselected tab
ft.hide(Arch_Fragment);
}
}
else if (tab.getText() == "Plane_Tab")
{
if (Plane_Fragment != null)
{
ft.hide(Plane_Fragment);
}
}
}
@Override
public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft)
{
}
}
不要忘記爲Hardik說... –
嗯,我會同意,這是更好的做法,但因爲種種原因,這些線路實際上工作,以提交事務意圖(也許Android覆蓋了==運算符,或者這可能是純運氣),所以這不成問題。如果代碼從未運行,爲什麼隱藏的片段會變灰? – Miguel