2014-02-13 1 views
4

Как использовать tabhost в андроиде для фрагментов управления .i имеет один активность и четыре Fragements и соответствующие XML files.i добавить свою вкладку в хост main_layout_activity.xml file.there я быть_наст другой Linnerlayout, я хочу заменить этот linnerlayout из Fragement.to, чтобы заменить эти Fragements, я должен использовать tabhost.help me please? Я нашел один код, но его messy.please найти ниже кода.Добавить фрагменты Tab хоста

final TabHost tabs= (TabHost) findViewById(R.id.tabhost); 
    tabs.setup(); 

    TabHost.TabSpec spec=tabs.newTabSpec("tag1"); 
    spec.setContent(R.id.fragment1); 
    spec.setIndicator("View Raves"); 
    tabs.addTab(spec); 
    spec=tabs.newTabSpec("tag2"); 
    spec.setContent(R.id.fragment2); 
    spec.setIndicator("My Badges"); 
    tabs.addTab(spec); 
    tabs.setCurrentTab(0); 

после того, как много идей, я поправьте мой код, как following.pls найти ниже

MainActivity.java 

package com.example.testtabs; 
import android.os.Bundle; 
import android.app.Activity; 
import android.app.FragmentManager; 
import android.app.FragmentTransaction; 
import android.app.TabActivity; 
import android.content.Intent; 
import android.view.Menu; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.TabHost; 
import android.widget.TabHost.OnTabChangeListener; 
import android.widget.TabHost.TabSpec; 
import android.support.v4.app.Fragment; 
import com.example.testtabs.R; 




public class MainActivity extends TabActivity { 


TabHost tab; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 


    setContentView(R.layout.activity_main); 


    FragementTest testfrag=new FragementTest(); 
    FragmentManager manager=getFragmentManager(); 
    FragmentTransaction transacti 
    transaction.add(R.id.my_layout1, testfrag, ""); 
    transaction.commit(); 


    tab= (TabHost) findViewById(android.R.id.tabhost); 
    tab.setup(); 

} 

} 

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:c 
    android:id="@+id/my_layout" 

    > 

    <LinearLayout 
     android:id="@+id/my_layout1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:layout_alignRight="@android:id/tabhost" 
     android:layout_marginTop="85dp" 
     android:orientati > 

    </LinearLayout> 

    <TabHost 
     android:id="@android:id/tabhost" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" > 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:orientati > 

      <TabWidget 
       android:id="@android:id/tabs" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" > 
      </TabWidget> 

      <FrameLayout 
       android:id="@android:id/tabcontent" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" > 


      </FrameLayout> 
     </LinearLayout> 
    </TabHost> 

</RelativeLayout> 

ответ

5

Craete метод, как это и передать ваши данные вкладки как его вид, его название и класс его фрагментов.

/** 
* Used to create a tab 
* 
* @param view 
* @param tag 
* @param name 
*/ 
private void setupTab(final View view, final String tag, Class<?> name) { 
     View tabview = createTabView(this, tag); 
     TabSpec setContent = tabHost.newTabSpec(tag).setIndicator(tabview) 
      .setContent(new TabContentFactory() { 
       public View createTabContent(String tag) { 
        return view; 
       } 
      }); 
    tabHost.addTab(setContent, name, null); 
} 



/** 
* Used to create tabview object and setting parameters 
* 
* @param context 
* @param text 
* @return 
*/ 
private View createTabView(final Context context, final String text) { 
    View view = LayoutInflater.from(context).inflate(R.layout.tab_layout, 
      null); 
    Button _button = (Button) view.findViewById(R.id.tabText); 
    _button.setText(text); 
    return view; 
} 

И называют этот метод, как это ..

setupTab(new Button(this), "Tab1", Fragment1.class); 
setupTab(new Button(this), "Tab2", Fragment2.class); 
+0

я хочу использовать конечные вкладки TabHost = (TabHost) findViewById (R.id.tabhost); но мой xml-файл «android: id =» @ android: id/tabhost », как он видит, тогда я не мог спросить вкладку хоста, есть ли какие-либо идеи? – VenushkaT

+0

вы можете получить объект табуса, такой как this..tabHost = (TabHost) findViewById (android .R.id.tabhost); –

+0

не из вашего файла R.java его из файла android R.java .. –