我使用 Android 向导创建了一个应用程序,并使用 aViewPager
来包含我的所有三个片段。主要活动包含在“activity_main.xml”中,并包含一个ViewPager
又包含一个PagerTitleStrip
. 我的 MainActivity 扩展了FragmentActivity
来自支持库。
我已经检查了Android Developers 上的Supporting Multiple Screens 。我创建了一个名为“layout-sw600dp”的文件夹,并在其中添加了另一个“activity_main.xml”。我在其中添加了我的片段LinearLayout
。当我在 7 英寸平板电脑上运行此程序时,我的应用程序强制在此行以 NPE 关闭,mViewPager.setAdapter(mSectionsPagerAdapter);
.
我知道我在这里得到了这个 NPE,因为它正在从 sw600dp 文件夹调用我的 xml,但是如何在平板电脑的单个视图中指定多个片段?
任何帮助或指示将不胜感激。
编辑 - 添加了一些源代码,试图只保留相关数据以保持帖子简短
正如您在下面看到的,大部分代码是由向导/adt-plugin 生成的。
布局/activity_main.xml
<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
布局-sw600dp/activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<fragment
android:id="@+id/fragment_one"...
<fragment
android:id="@+id/fragment_two"...
MainActivity.java
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 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 action bar.
final ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
// Set up the ViewPager with the sections adapter.
mViewPager = (ViewPager) findViewById(R.id.pager);
mViewPager.setAdapter(mSectionsPagerAdapter);
// When swiping between different sections, select the corresponding tab.
// We can also use ActionBar.Tab#select() to do this if we have a reference to the
// Tab.
mViewPager.setOnPageChangeListener(...