0
我正试图把一个简单的视图寻呼机应用程序,我想扩大后。Android ViewPager findViewById(R.id.viewPager)总是返回null
目前当我打电话给ViewPager vPager = (ViewPager) findViewById(R.id.viewPager);
时,我的FragmentActivity
的onCreate
方法返回null。
以下是完整的解释:
我的GUI XML是这样的:
\res\layout\view_fragment.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Medium Text"
android:textAppearance="?android:attr/textAppearanceMedium" />
</LinearLayout>
相应片段类看起来是这样的:
public class ViewFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.view_fragment, container, false);
}
}
,我有一个寻呼机XML像这个:
\res\layout\view_pager.xml
<android.support.v4.view.ViewPager
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
和我有寻呼机活动,看起来像这样:
public class ScreenPagerActivity extends FragmentActivity {
private ViewPager vPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.view_fragment); // The view
vPager = (ViewPager) findViewById(R.id.viewPager);
ScreenPagerAdapter pagerAdapter = new ScreenPagerAdapter(getSupportFragmentManager());
vPager.setAdapter(pagerAdapter);
}
@Override
public void onBackPressed() {
if (vPager.getCurrentItem() == 0) {
// If the user is currently looking at the first step, allow the system to handle the
// Back button. This calls finish() on this activity and pops the back stack.
super.onBackPressed();
} else {
// Otherwise, select the previous step.
vPager.setCurrentItem(vPager.getCurrentItem() - 1);
}
}
private class ScreenPagerAdapter extends FragmentStatePagerAdapter {
public ScreenPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public android.support.v4.app.Fragment getItem(int position) {
return new ViewFragment();
}
@Override
public int getCount() {
return 5;
}
}
}
然而,该声明vPager = (ViewPager) findViewById(R.id.viewPager);
总是返回null。任何人都可以告诉我哪里出错了。
只是柜面有帮助,我的活动片段清单文件看起来是这样的:
<activity
android:name="uk.co.jeeni.android.androidpagerview.ScreenPagerActivity"
android:label="@string/app_name"
android:parentActivityName="uk.co.jeeni.android.androidpagerview.MainActivity"
android:uiOptions="splitActionBarWhenNarrow" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="uk.co.jeeni.android.androidpagerview.MainActivity" />
</activity>
请帮助!
谢谢