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>