在我的主要活动中,我有:
private DataManager mDataManager;
在同一个活动中,我在生命周期后管理这个变量。这些是相关的方法:
public class MainActivity extends AppCompatActivity {
@Override
public void onStart() {
super.onStart();
mDataManager = new DataManager(this);
}
@Override
public void onResume() {
super.onResume();
mDataManager.connect(getIpAddress());
}
@Override
public void onPause() {
super.onPause();
mDataManager.disconnect();
}
@Override
public void onStop() {
super.onStop();
mDataManager = null;
}
@Override
public DataManager getDataManager() {
return mDataManager;
}
@Override
public void updateFragments() {
runOnUiThread(new Runnable() {
@Override
public void run() {
if (mLoading.isShowing())
mLoading.dismiss();
List<Fragment> allFragments = getSupportFragmentManager().getFragments();
if (allFragments == null || allFragments.isEmpty())
return;
for (Fragment fragment : allFragments)
if (fragment.isVisible())
((UpdatableFragment) fragment).updateView();
}
});
}
我有一些片段使用getDataManager()
来自我更新数据,但有时,通常当我暂时不使用该应用程序时,我得到nullpointerexception
因为getDataManager()
返回null 。根据活动生命周期,对象永远不应该是null
或者我错过了什么?
编辑:ViewPager的初始化
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar);
setSupportActionBar(myToolbar);
MainAdapter adapter = new MainAdapter(getSupportFragmentManager());
ViewPager viewPager = (ViewPager) findViewById(R.id.my_pager);
viewPager.setAdapter(adapter);
}
public class MainAdapter extends FragmentPagerAdapter {
MainAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return FragmentX.newInstance();
case 1:
return FragmentY.newInstance();
case 2:
return FragmentZ.newInstance();
case 3:
return FragmentU.newInstance();
}
return null;
}
@Override
public int getCount() {
return 4;
}
}