Android 正在等待viewpager中的碎片膨胀
我有一个应用程序,使用一个单一的布局来显示所有的输出等。我已经把它转换成一个多标签应用程序使用Android 正在等待viewpager中的碎片膨胀,android,android-fragments,Android,Android Fragments,我有一个应用程序,使用一个单一的布局来显示所有的输出等。我已经把它转换成一个多标签应用程序使用 ViewPager viewPager = (ViewPager) findViewById(R.id.pager); ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); adapter.addFragment(new FragmentOne(), "Tab 1"); adapter.addFrag
ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
adapter.addFragment(new FragmentOne(), "Tab 1");
adapter.addFragment(new FragmentTwo(), "Tab 2");
adapter.addFragment(new FragmentThree(), "Tab 3");
viewPager.setAdapter(adapter);
问题是我不能再在onCreate期间访问片段(就在上面的代码之后),因为我现在得到的错误是它们是空对象引用
例如,如果我尝试在上面的代码之后使用此代码设置按钮的标题
Button button=(Button) findViewById(R.id.startButton);
button.setText("BLAH");
我得到空对象错误
我使用onCreate设置文本、谷歌地图视图和GPS检查,所以这不仅仅是一个简单的按钮更改
如何确保所有页面布局都已完成膨胀,并且可以安全地访问其中的对象?我想在应用程序首次启动时更新所有选项卡/页面内容
谢谢。最好的办法是将此代码移到片段中。您可以连接到
onCreateView()
,onViewCreated()
,onActivityCreated()
,或者任何其他片段生命周期方法
如果出于某种原因需要在活动中执行此代码,那么您将在活动中创建一个新方法,并从这些片段生命周期方法之一触发它。也许是这样的:
// in the activity
public void onFragmentStartup() {
Button button=(Button) findViewById(R.id.startButton);
button.setText("BLAH");
}
// in the fragment
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
((MainActivity) getActivity()).onFragmentStartup();
}