我想使用ActionBar选项卡和ViewPager来实现在选项卡之间滑动。我已经成功地使用这里的例子:与ViewPager和框架布局的ActionBar选项卡
http://developer.android.com/reference/android/support/v4/view/ViewPager.html
不过,我也想在XML中添加ViewPager之外的帧结构:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" >
<android.support.v4.view.ViewPager
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/FrameLayout1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
</android.support.v4.view.ViewPager>
<FrameLayout
android:id="@+id/frame_layout"
android:name="com.banagas.calculator.ButtonFragment"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
</LinearLayout>
如果我设置的setContentView()来我同时与ViewPager和框架布局布局,ViewPager停止运行:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.i("MainActivity", "onCreate");
mViewPager = new ViewPager(this);
mViewPager.setId(R.id.FrameLayout1);
ActionBar bar = getSupportActionBar();
mViewPager.setOffscreenPageLimit(4);
bar.setDisplayHomeAsUpEnabled(false);
bar.setDisplayShowTitleEnabled(false);
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
mTabsAdapter = new TabsAdapter(this, mViewPager);
mTabsAdapter.addTab(bar.newTab().setText("Display"), DisplayFragment.class, null);
mTabsAdapter.addTab(bar.newTab().setText("Y="), YFragment.class, null);
mTabsAdapter.addTab(bar.newTab().setText("Graph"), GraphFragment.class, null);
mTabsAdapter.addTab(bar.newTab().setText("Table"), TableFragment.class, null);
if (findViewById(R.id.frame_layout) != null)
{
if (savedInstanceState != null)
{
return;
}
getSupportFragmentManager().beginTransaction().add(R.id.frame_layout, new ButtonFragment()).commit();
Log.i("MainActivity", "add.ButtonFragment");
}
}
我可以看到ViewPager内的标签而已。尽管我的框架布局工作得很好。我如何让ViewPager使用它?
可能与bug无关,但是: 1.为什么要为FrameLayout添加片段名称(ButtonFragment)? 2.最好首先检查savedInstanceState!= null,然后才能搜索视图。 – vovkab
我实际上是使用FrameLayout在按钮单击时在两个片段之间切换,并且我将其格式化为这种方式,因为我被告知这是做这件事的正确方法,但我会尝试另一种方式。 – vabanagas
“ViewPager中没有别的东西”是什么意思? FragmentLayout是否占用全部空间或者是未创建的碎片? –