I ended up trying a couple things. I added mViewPager.setOffscreenPageLimit(3);
and then just put my code in an if
statement with a condition of position == 3
and that seems to have solved all my issues with the nullpointerexception. Thanks everyone for the help!
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.widget.CheckBox;
import android.widget.EditText;
public class SwipeEnterResults extends FragmentActivity {
ResultsPagerAdapter mResultsPagerAdapter;
ViewPager mViewPager;
//Declare EditText for reviewing data on Fragment SwipeReviewResults
EditText txt1;
EditText rvw1;
EditText txt2;
EditText rvw2;
EditText txt3;
EditText rvw3;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.swipe_enter_results);
//Set up ViewPager and allow app to hold prior pages when off screen
mResultsPagerAdapter = new ResultsPagerAdapter(getSupportFragmentManager());
mViewPager = (ViewPager) findViewById(R.id.pager);
mViewPager.setAdapter(mResultsPagerAdapter);
mViewPager.setOffscreenPageLimit(3);
//When SwipeReviewResults is displayed, fill EditText's with data from other fragments
mViewPager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
if (position == 3) {
//set values to EditTexts to pull data from 3 entry fragments and display in SwipeReviewResults
EditText txt1 = (EditText) mViewPager.findViewById(R.id.txt1);
EditText rvw1 = (EditText) mViewPager.findViewById(R.id.rvw1);
EditText txt2 = (EditText) mViewPager.findViewById(R.id.txt2);
EditText rvw2 = (EditText) mViewPager.findViewById(R.id.rvw2);
EditText txt3 = (EditText) mViewPager.findViewById(R.id.txt3);
EditText rvw3 = (EditText) mViewPager.findViewById(R.id.rvw3);
//Set EditText's on SwipeReviewResults
rvw1.setText(txt1.getText().toString());
rvw2.setText(txt2.getText().toString());
rvw3.setText(txt3.getText().toString());
}
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) { }
@Override
public void onPageScrollStateChanged(int arg0) { }
});
}
public class ResultsPagerAdapter extends FragmentPagerAdapter{
public ResultsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
Fragment f;
switch (position) {
case 0:
f = new Swipe1();
break;
case 1:
f = new Swipe2();
break;
case 2:
f = new Swipe3();
break;
case 3:
f = new SwipeReviewResults();
break;
default:
f = new Fragment();
break;
}
return f;
}
@Override
public int getCount() {
return 4;
}
@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case 0:
return getString(R.string.str1);
case 1:
return getString(R.string.str2);
case 2:
return getString(R.string.str3);
case 3:
return getString(R.string.strReview);
default:
return "Page " + (position + 1);
}
}
}
}