Мне не хватает понимания того, как это сделать, и большинство примеров, которые я видел, либо не кажутся применимыми в моей ситуации, либо совершенно смущают меня.Загрузите все фрагменты в ViewPager onCreate
Моя проблема: У меня есть 4 фрагмента, 2 для отправки данных и 2 для анализа данных и расчетов данных. Единственный способ, которым мой код способен вытащить из двух последних фрагментов, кажется, от основного FragmentActivity
. Проблема в том, что не все мои фрагменты загружаются, когда Activity переходит через метод onCreate, и когда я пытаюсь объявить onClickListener
, я получаю NullPointerException
, потому что эта страница еще не загружена.
Теперь у меня есть setOffscreenPageLimit
, установленный в 3, так что это не должно быть проблемой, но я не могу понять, как загрузить страницы при запуске.
Код:
Линия, которая вызывает приложение силы близко является декларация/выполнение btnEnterChemicals
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.swipe_chemicals);
//declarations
...
some declarations
...
//Set up ViewPager and allow app to hold prior pages when off screen
ChemicalsAdapter = new ResultsPagerAdapter(getSupportFragmentManager());
ChemicalsPager = (ViewPager) findViewById(R.id.chemicals_pager);
ChemicalsPager.setAdapter(ChemicalsAdapter);
ChemicalsPager.setOffscreenPageLimit(3);
//When SwipeReviewResults is displayed, fill EditText's with data from other fragments
ChemicalsPager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
if (position == 2) {
//Pull values from Chemicals 1
...
some assignments
...
//Pull values from Chemicals 2
...
some assignments
...
//Declare rvw text boxes for Meter Review 1
...
some assignments
...
//Declare rvw text boxes for Meter Review 2
...
some assignments
...
//If data isn't null, perform calculations on client entries
if (data != null)
{
//Do calculations before displaying values in review pages
...
some calculations
...
//Display results
...
display results
...
}
//Copy entered data to Chemicals Review 1
...
display results
...
//Copy entered data to Chemicals Review 2
...
display results
...
}
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) { }
@Override
public void onPageScrollStateChanged(int arg0) { }
});
//Insert data into database
class insertNew implements Runnable
{
...
data submission
...
}
//Declare and set OnClickListener for Entering Results
final Button btnEnterChemicals = (Button) ChemicalsPager.findViewById(R.id.btnEnterChemicals);
btnEnterChemicals.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//set and encode url for data submission
...
prepare data
...
//Declare and start thread
Thread thrInsertNew = new Thread(new insertNew(url));
thrInsertNew.start();
}
});
Спасибо за вашу помощь заранее !!