Android como interagir com as guias Fragment
Olá, estou com dificuldades para alterar a exibição visual da atividade do fragmento. Criei todas as guias, mas no Click não sei como passar a atividade para esse espaço em branc
http: //i40.tinypic.com/22bwxx.pn
, então a estrutura disso é uma atividade simples chamadaMain
, que apenas define a exibição do conteúdo comomaintabholder.xml
documento que contém a exibição de fragmento que se conecta a uma classe chamadaMainNav
uja exibição de conteúdo contém todas as guias na parte inferio
maintabholder.xml
:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<include layout="@layout/header" android:layout_alignParentTop="true" android:id="@+id/headerArea"></include>
<fragment
class="my.package.name.MainNav"
android:id="@+id/fragment_tabs"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</LinearLayout>
MainNav.java code snippet
:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState)
{
mRoot = inflater.inflate(R.layout.fragment_tabs, null);
mTabHost = (TabHost) mRoot.findViewById(android.R.id.tabhost);
setupTabs();
return mRoot;
}
e R.layout.fragment_tabs:
<?xml version="1.0" encoding="utf-8"?>
<TabHost
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#EFEFEF">
<RelativeLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TabWidget
android:id="@android:id/tabs"
android:layout_alignParentBottom="true"
android:layout_width="fill_parent"
android:background="@drawable/tab_background"
android:gravity="center_horizontal"
android:layout_height="wrap_content" >
</TabWidget>
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<FrameLayout
android:id="@+id/tab_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<FrameLayout
android:id="@+id/tab_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<FrameLayout
android:id="@+id/tab_3"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<FrameLayout
android:id="@+id/tab_4"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<FrameLayout
android:id="@+id/tab_5"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</FrameLayout>
</RelativeLayout>
e finalmente o conteúdo de uma atividade que eu quero carregar no fragmento (ao pressionar o botão tab1)
public class HomeFragment extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.home);
}
}
Isso é para ajudá-lo a entender o essencial, mas o problema ocorre aqui no MainNav.java
@Override
public void onTabChanged(String tabId) {
Log.d(TAG, "onTabChanged(): tabId=" + tabId);
if (TAB_HOME.equals(tabId)) {
updateTab(tabId, R.id.tab_1);
mCurrentTab = 0;
return;
}
}
quando uma guia é clicada, ela é registrada noonTabChanged
atividade e oupdateTab
função @ é chamada:
private void updateTab(String tabId, int placeholder) {
FragmentManager fm = getFragmentManager();
if (fm.findFragmentByTag(tabId) == null) {
//fm.beginTransaction()
// .replace(placeholder, /*need fragment object here*/ , tabId)
// .commit();
//
}
}
comentoureplace
método @ está procurando um(int, fragment, string)
e acho que deve mudar o espaço em branco para mim.
mas eu não entendo de onde eu recebo o objeto de fragmento! Este objeto fantasma precisa de alguma forma conter meuHomeFragment
layout xml de @ e permita-me interagir com tudo o que codifiquei paraHomeFragment
atividade.
Meu primeiro palpite é que meuHomeFragment
atividade precisaextend FragmentActivity
apenas atividade. Mas é aqui que estou batendo em uma pared
Há muito pouca documentação sobre os métodos do pacote de compatibilidade, mas a documentação do TabActivity diz para não usar mais o TabActivity, então aqui estou. Desenvolvendo para Android 2.2 +
Insight apreciado.