Java 有人能给我展示一下PagerSlidingAbstrip的一个简单的工作实现吗?
这是图书馆: 我正在尝试实现它,但我的应用程序在启动时不断崩溃。我试图理解发布的示例应用程序,但认为我做得不对。这是我的密码: MainActivity.javaJava 有人能给我展示一下PagerSlidingAbstrip的一个简单的工作实现吗?,java,android,android-layout,Java,Android,Android Layout,这是图书馆: 我正在尝试实现它,但我的应用程序在启动时不断崩溃。我试图理解发布的示例应用程序,但认为我做得不对。这是我的密码: MainActivity.java 导入android.graphics.Color; 导入android.graphics.drawable.ColorDrawable; 导入android.graphics.drawable.drawable; 导入android.graphics.drawable.LayerDrawable; 导入android.graphics
导入android.graphics.Color;
导入android.graphics.drawable.ColorDrawable;
导入android.graphics.drawable.drawable;
导入android.graphics.drawable.LayerDrawable;
导入android.graphics.drawable.TransitionDrawable;
导入android.os.Build;
导入android.os.Bundle;
导入android.os.Handler;
导入android.support.v4.app.Fragment;
导入android.support.v4.app.FragmentActivity;
导入android.support.v4.app.FragmentManager;
导入android.support.v4.app.FragmentPagerAdapter;
导入android.support.v4.view.ViewPager;
导入android.util.TypedValue;
导入android.view.Menu;
导入android.view.MenuItem;
导入android.view.view;
导入com.astuetz.PagerSlidingTabStrip;
公共类MainActivity扩展了FragmentActivity{
私有最终处理程序=新处理程序();
专用页滑动选项卡;
私人寻呼机;
专用MyPagerAdapter适配器;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tabs=(PagerSlidingTabStrip)findViewById(R.id.tabs);
pager=(ViewPager)findViewById(R.id.pager);
适配器=新的MyPagerAdapter(getSupportFragmentManager());
寻呼机设置适配器(适配器);
tabs.setViewPager(寻呼机);
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(R.menu.main,menu);
返回true;
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
//处理操作栏项目单击此处。操作栏将
//自动处理Home/Up按钮上的点击,只要
//在AndroidManifest.xml中指定父活动时。
int id=item.getItemId();
if(id==R.id.action\u设置){
返回true;
}
返回super.onOptionsItemSelected(项目);
}
@凌驾
SaveInstanceState上受保护的无效(束超出状态){
super.onSaveInstanceState(超出状态);
}
@凌驾
RestoreInstanceState上的受保护无效(Bundle savedInstanceState){
super.onRestoreInstanceState(savedInstanceState);
}
private Drawable.Callback drawableCallback=新的Drawable.Callback(){
@凌驾
公共无效可撤销(可撤销who){
getActionBar().setBackgroundDrawable(世卫组织);
}
@凌驾
public void scheduledawable(可提取谁、可运行什么、长时间){
handler.posttime(什么,什么时候);
}
@凌驾
公共无效计划外可撤销(可撤销谁、可运行什么){
handler.removeCallbacks(什么);
}
};
公共类MyPagerAdapter扩展了FragmentPagerAdapter{
私有最终字符串[]标题={“T1”,“T2”};
公共MyPagerAdapter(碎片管理器fm){
超级(fm);
}
公共字符序列getPageTitle(int位置){
返回标题[职位];
}
@凌驾
公共片段getItem(int i){
返回null;
}
@凌驾
public int getCount(){
返回标题。长度;
}
}
}
这里是activity_main.xml
下面是我正在使用的一个示例
public class Formulario extends FragmentActivity implements ActionBar.TabListener {
private static final FragmentTransaction transaction = null;
public String ambitorec;
private ViewPager viewPager;
private TabsPagerAdapter mAdapter;
private ActionBar actionBar;
// Tab titles
private String[] tabs = { "tab 1", "tab 2", "tab 3" };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_formulario);
ambitorec = getIntent().getStringExtra("ambito");
// Initilization
viewPager = (ViewPager) findViewById(R.id.pager);
actionBar = getActionBar();
mAdapter = new TabsPagerAdapter(getSupportFragmentManager());
viewPager.setAdapter(mAdapter);
actionBar.setHomeButtonEnabled(false);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
// Adding Tabs
for (String tab_name : tabs) {
actionBar.addTab(actionBar.newTab().setText(tab_name)
.setTabListener(this));
}
/**
* on swiping the viewpager make respective tab selected
* */
viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
// on changing the page
// make respected tab selected
actionBar.setSelectedNavigationItem(position);
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
});
}
@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
}
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
// on tab selected
// show respected fragment view
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
}
}
此外,您还需要添加适配器,在这种情况下:
public class TabsPagerAdapter extends FragmentPagerAdapter {
public TabsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int index) {
switch (index) {
case 0:
// tab 1 fragment activity
return new Formulario1Fragment();
case 1:
// tab2 fragment activity
return new Formulario2Fragment();
case 2:
// tab 3 fragment activity
return new MultimediaFragment();
}
return null;
}
@Override
public int getCount() {
// get item count - equal to number of tabs
return 3;
}
}
希望有帮助,如果您需要更多帮助,我将尝试解释您没有在FragmentPagerAdapter的getItem方法中实例化任何希望成为选项卡的片段。相反,您将返回null,因此没有视图可填充viewpager。我可以看到您已经查看了他的示例项目,也许可以仔细查看您试图添加到viewpager的片段。上述答案看起来是一个合理的实现。在
FragmentPagerAdapter#getItem
中,您没有实例化任何要成为选项卡的片段。您没有返回片段,而是返回null,这意味着没有视图可以填充viewpager。我看到您已经查看了他的示例项目,所以请再次查看您试图添加到viewpager的片段。上面的响应似乎是第二个实现。btw,每个选项卡都是一个不同的片段,因此您将希望在每个选项卡中的内容放在每个不同的片段中,我遵循的教程是这样的: