Saya ingin membuat antarmuka tab gesek menggunakan FragmentTabHost
dengan ViewPager
. Sejauh ini saya sudah mendapatkan Fragmen untuk digeser. Satu-satunya hal yang terjadi adalah fragmen tersebut dapat meluncur ke belakang tab yang dinonaktifkan/macet dan tidak berfungsi. Bagaimana cara membuat tab FragmentTabHost berfungsi dengan ViewPager untuk menggeser antar tab?
Saya mencoba menggunakan FragmentTabHost tanpa viewpager, ini berfungsi dengan baik, tetapi tidak berfungsi dengan viewpager.
berikut screenshot tampilannya:
Kode sumber Java utama:
import java.util.List;
import java.util.Vector;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.app.FragmentTabHost;
import android.support.v4.view.ViewPager;
public class MainActivity extends FragmentActivity {
private FragmentTabHost mTabHost;
private ViewPager pager;
private MyPagerAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTabHost = (FragmentTabHost)findViewById(android.R.id.tabhost);
pager = (ViewPager) findViewById(R.id.viewpager);
List<Fragment> fragments = new Vector<Fragment>();
fragments.add(Fragment.instantiate(this, BatteryFragment.class.getName()));
fragments.add(Fragment.instantiate(this, DeviceFragment.class.getName()));
fragments.add(Fragment.instantiate(this, NetworkFragment.class.getName()));
adapter = new MyPagerAdapter(getSupportFragmentManager(), fragments);
pager.setAdapter(adapter);
mTabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent);
mTabHost.addTab(mTabHost.newTabSpec("battery").setIndicator("Battery",
getResources().getDrawable(R.drawable.ic_battery_tab)),
BatteryFragment.class, null);
mTabHost.addTab(mTabHost.newTabSpec("network").setIndicator("Network",
getResources().getDrawable(R.drawable.ic_network_tab)),
NetworkFragment.class, null);
mTabHost.addTab(mTabHost.newTabSpec("device").setIndicator("Device",
getResources().getDrawable(R.drawable.ic_device_tab)),
DeviceFragment.class, null);
}
public class MyPagerAdapter extends FragmentPagerAdapter {
private List<Fragment> fragments;
public MyPagerAdapter(FragmentManager fm, List<Fragment> fragments) {
super(fm);
this.fragments = fragments;
}
@Override
public Fragment getItem(int arg0) {
// TODO Auto-generated method stub
return this.fragments.get(arg0);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return this.fragments.size();
}
}
}
Kode XML:
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TabWidget
android:id="@android:id/tabs"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0"/>
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_weight="0"/>
<FrameLayout
android:id="@+id/realtabcontent"
android:layout_width="match_parent"
android:layout_height="0dp" />
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1"/>
</LinearLayout>
</android.support.v4.app.FragmentTabHost>