Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 有人能给我展示一下PagerSlidingAbstrip的一个简单的工作实现吗?_Java_Android_Android Layout - Fatal编程技术网

Java 有人能给我展示一下PagerSlidingAbstrip的一个简单的工作实现吗?

Java 有人能给我展示一下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

这是图书馆: 我正在尝试实现它,但我的应用程序在启动时不断崩溃。我试图理解发布的示例应用程序,但认为我做得不对。这是我的密码:

MainActivity.java

导入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,每个选项卡都是一个不同的片段,因此您将希望在每个选项卡中的内容放在每个不同的片段中,我遵循的教程是这样的: