Ich weiß, das ist sehr allgemeine Frage, aber kann nicht herausfinden, was los ist.bekommen NullPointerException Fehler anzeigen Pager beim Abrufen von Fragment-Methode in Ansicht Pager-Aktivität
Fragment Java-Klasse
// newInstance constructor for creating fragment with arguments
public static BpDetails newInstance(int page) {
BpDetails fragmentFirst = new BpDetails();
Bundle args = new Bundle();
args.putInt("someInt", page);
fragmentFirst.setArguments(args);
return fragmentFirst;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
page = getArguments().getInt("someInt", 0);
}
public String getSystolic(){
return this.systolic.getText().toString();
}
/* public String getDiastolic(){
return this.diastolic.getText().toString();
}*/
// Inflate the view for the fragment based on layout XML
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final View view = inflater.inflate(R.layout.bp_details, container, false);
Log.i("View ",view.toString());
Log.i("DOB is ",Long.toString(Constants.dob));
systolic =(EditText) view.findViewById(R.id.systolic);
diastolic =(EditText) view.findViewById(R.id.diastolic);
return view;
}
ViewPager Aktivität
vpPager = (ViewPager) findViewById(R.id.view_pager);
adapterViewPager = new MyPagerAdapter(getSupportFragmentManager());
vpPager.setAdapter(adapterViewPager);
findViewById(R.id.btn_prev).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// checking for last page
// if last page home screen will be launched
int current = getItem(-1);
if (current!=0)
prevPage=current-1;
if (current < 4) {
// move to next screen
vpPager.setCurrentItem(current);
} else {
//final reached.
}
}
});
findViewById(R.id.btn_next).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// checking for last page
// if last page home screen will be launched
int current = getItem(+1);
if (current!=0)
prevPage=current-1;
System.out.println("Prev page "+prevPage);
if (current < 4) {
// move to next screen
Fragment bpFragment=adapterViewPager.getItem(vpPager.getCurrentItem());
if (bpFragment instanceof BpDetails){
System.out.println("Current item is "+vpPager.getCurrentItem());
BpDetails fr = (BpDetails)adapterViewPager.getItem(vpPager.getCurrentItem());
**String systolicString = fr.getSystolic();** //error point
Log.i("Systolic is ",systolicString);
}
} else {
//final reached.
}
}
});
}
private int getItem(int i) {
return vpPager.getCurrentItem() + i;
}
public static class MyPagerAdapter extends FragmentPagerAdapter {
private static int NUM_ITEMS = 4;
private static int mSelectedPosition;
public MyPagerAdapter(FragmentManager fragmentManager) {
super(fragmentManager);
//mSelectedPosition=selectedPosition;
}
// Returns total number of pages
@Override
public int getCount() {
return NUM_ITEMS;
}
// Returns the fragment to display for that page
@Override
public Fragment getItem(int position) {
switch (position) {
case 0: // Fragment # 0 - This will show FirstFragment
return BasicDetails.newInstance(0);
case 1:
return BpDetails.newInstance(1);
case 2:
return BslDetails.newInstance(2);
case 3:
return Summary.newInstance(3);
default:
return null;
}
}
}
Warum ich die Nullpointer bin immer da ich die öffentliche Methode des Fragments am Zugriff auf bevor er zum nächsten Fragment gehen. Bevor Sie abstimmen, hinterlassen Sie bitte den Grund der Abstimmung, damit ich die Frage verbessern kann.
EDit:
ich kennen gelernt habe, seit ich die getitem() -Methode das ist nenne, warum alle die Variable des Fragments, das null, warum ich die Nullpointer bin immer. Gibt es eine Möglichkeit, dieses Problem zu lösen?