Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.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
android-在操作栏选项卡中滑动不起作用_Android_Android Layout_Android Tabs - Fatal编程技术网

android-在操作栏选项卡中滑动不起作用

android-在操作栏选项卡中滑动不起作用,android,android-layout,android-tabs,Android,Android Layout,Android Tabs,我编写了这段代码来执行操作栏选项卡之间的水平滑动。但听者甚至没有被呼叫。这是密码- @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); setupTabs(); pager = (ViewPager) findViewById(R.id.pag

我编写了这段代码来执行操作栏选项卡之间的水平滑动。但听者甚至没有被呼叫。这是密码-

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    setupTabs();

    pager = (ViewPager) findViewById(R.id.pager);
    pager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {

        @Override
        public void onPageSelected(int position) {
            // When swiping between pages, select the
            // corresponding tab.
            System.out.println("in");
            getActionBar().setSelectedNavigationItem(position);
        }
    });
}
private void setupTabs() {
    ActionBar bar = getSupportActionBar();
    bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    ActionBar.Tab tab1 = bar.newTab();
    tab1.setText(R.string.tab_live);
    tab1.setTabListener(new MyTabListener());

    ActionBar.Tab tab2 = bar.newTab();
    tab2.setText(R.string.tab_tech_13);
    tab2.setTabListener(new MyTabListener());

    ActionBar.Tab tab3 = bar.newTab();
    tab3.setText(R.string.tab_tech_14);
    tab3.setTabListener(new MyTabListener());

    ActionBar.Tab tab4 = bar.newTab();
    tab4.setText(R.string.tab_map);
    tab4.setTabListener(new MyTabListener());

    ActionBar.Tab tab5 = bar.newTab();
    tab5.setText(R.string.tab_contacts);
    tab5.setTabListener(new MyTabListener());

        bar.addTab(tab1, POS_LIVE,true);
        bar.addTab(tab2, POS_TECH_13);
        bar.addTab(tab3, POS_TECH_14);
        bar.addTab(tab4, POS_MAP);
        bar.addTab(tab5, POS_CONTACTS);


    // bar.addTab(tab2, POS_COMPT);
    // bar.addTab(tab3, POS_EVENTS);

}
private class MyTabListener implements ActionBar.TabListener {

    @Override
    public void onTabSelected(Tab tab, FragmentTransaction ft) {
        switch (tab.getPosition()) {


        case POS_TECH_13:
            FragmentTech13 frag1 = new FragmentTech13();
            ft.replace(android.R.id.content, frag1);
            break;

        case POS_TECH_14:
            FragmentTech14 frag2 = new FragmentTech14();
            ft.replace(android.R.id.content, frag2);
            break;

        case POS_CONTACTS:
            FragmentContacts frag3 = new FragmentContacts();
            ft.replace(android.R.id.content, frag3);
            break;


        case POS_LIVE:
            FragmentLive fraglive = new FragmentLive();
            ft.replace(android.R.id.content, fraglive);
            fraglive.setLiveUpdateListener(ActivityMain.this);
            break;
        }
    }
以下是上述
MainActivity
-

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.view.ViewPager
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent" />


当我尝试更改视图时,这里甚至没有调用
setOnPageChangeListener

如果您使用的是FragmentActivity,下面的代码只起作用:

public class Starter extends FragmentActivity {

/**
 * The {@link android.support.v4.view.PagerAdapter} that will provide
 * fragments for each of the sections. We use a
 * {@link android.support.v4.app.FragmentPagerAdapter} derivative, which
 * will keep every loaded fragment in memory. If this becomes too memory
 * intensive, it may be best to switch to a
 * {@link android.support.v4.app.FragmentStatePagerAdapter}.
 */
SectionsPagerAdapter mSectionsPagerAdapter;

/**
 * The {ViewPager} that will host the section contents.
 */
static ViewPager mViewPager;

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.starter);

    // Create the adapter that will return a fragment for each of the three
    // primary sections of the app.
    mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());

    // Set up the ViewPager with the sections adapter.
    mViewPager = (ViewPager) findViewById(R.id.pager);
    mViewPager.setAdapter(mSectionsPagerAdapter);

    //tab bar background
    mViewPager.setBackgroundColor(Color.rgb(r,g,b));

    FragmentPagerAdapter adapter = new SectionsPagerAdapter(getSupportFragmentManager());

    page = getIntent().getIntExtra("pagina", 2);

    mViewPager.setCurrentItem(page);
}
}
这是我的(工作)代码:

}

XML:


结果如下:(请不要担心图形;)

尝试使用普通的“新建OnPageChangeListener()”@daro2189,而不是“ViewPager.SimpleOnPageChangeListener()”。这不起作用!!在哪里为寻呼机设置“setAdapter()”@daro2189我没有使用
setAdapter()
方法。相反,我在
tabListener
中做了一些事情。我已经编辑了这个问题。看一看。这不是一个零碎的活动。这是一个简单的活动吗?你能发布xml布局吗?这是一个简单的活动。我已经发布了
MainActivity
的xml。我已经编辑了这个问题。您正在扩展的“ActionBarActivity”是什么?这是来自支持库(appcompact)-[link]()如果您使用的是android 4及更高版本的use just Activity and remove everywhere Support,请发布您的MainViewPageAdapter类不幸的是,我不再有此代码,但此适配器非常类似,但请告诉我您想了解此类的哪些信息?
public class MainActivity extends ActionBarActivity implements ActionBar.TabListener, ViewPager.OnPageChangeListener {
private ActionBar.Tab mTab;
private ActionBar mActionBar;
private ViewPager mPager;
private MainViewPagerAdapter mAdapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    initTabs();
}

/**
 * Function creates all tabs with initializations and creates action bar
 */
private void initTabs(){
    // Create an actionbar
    mActionBar = getSupportActionBar();
    mActionBar.setDisplayHomeAsUpEnabled(true);
    mActionBar.setTitle(R.string.first_tab_title);
    mActionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_SHOW_TITLE | ActionBar.DISPLAY_SHOW_CUSTOM);
    mActionBar.setDisplayHomeAsUpEnabled(true);

    mPager = (ViewPager) findViewById(R.id.fragment_pager);
    mAdapter = new MainViewPagerAdapter(getSupportFragmentManager());
    mPager.setAdapter(mAdapter);
    mPager.setCurrentItem(0);
    mPager.setOnPageChangeListener(this);

    // Create Actionbar Tabs
    mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    // Create first Tab
    mTab = mActionBar.newTab().setTabListener(this);
    mTab.setText(R.string.first_tab_title);
    mTab.setIcon(R.drawable.tab_pet_selected);
    mActionBar.addTab(mTab);

    // Create Second Tab
    mTab = mActionBar.newTab().setTabListener(this);
    mTab.setText(R.string.demo_tab_title);
    mTab.setIcon(R.drawable.tab_vet_selected);
    mActionBar.addTab(mTab);

    // Create Third Tab
    mTab = mActionBar.newTab().setTabListener(this);
    mTab.setText(R.string.demo_tab_title);
    mTab.setIcon(R.drawable.tab_news_selected);
    mActionBar.addTab(mTab);

    // Create Third Tab
    mTab = mActionBar.newTab().setTabListener(this);
    mTab.setText(R.string.demo_tab_title);
    mTab.setIcon(R.drawable.tab_emergency_selected);
    mActionBar.addTab(mTab);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.main_menu, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.action_about:
            Intent i = new Intent(MainActivity.this, AboutActivity.class);
            startActivity(i);
            return true;
    }
    return false;
}

@Override
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
    mPager.setCurrentItem(tab.getPosition(), true);
}

@Override
public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) {
}

@Override
public void onTabReselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
}

@Override
public void onPageScrolled(int i, float v, int i2) {
}

@Override
public void onPageSelected(int i) {
    mActionBar.getTabAt(i).select();
}

@Override
public void onPageScrollStateChanged(int i) {
}
    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:tools="http://schemas.android.com/tools"
                android:id="@+id/layout_parent"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                tools:context=".MainActivity">

    <android.support.v4.view.ViewPager
            android:id="@+id/fragment_pager"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>


</RelativeLayout>