0

According to this code I am trying to use button which is in the first layout of viewpager. First layout dowloand to automatically so I need to use button before working of addOnPageListener methods. But it gave me this error:

'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference

Here is my code:

public class SurveyFragment extends Fragment implements View.OnClickListener, DatePickerDialog.OnDateSetListener{


View view;
private ViewPager viewPager;
private int[] layouts={R.layout.question1, R.layout.question2};
private MyPagerAdapter myPagerAdapter;

private LinearLayout Dots_Layout;
private ImageView[] dots;

private Button buttonNext;
private Button buttonBirthDate;



@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {

    view = inflater.inflate(R.layout.survey_layout, container, false);


    viewPager=(ViewPager)view.findViewById(R.id.viewPager);
    myPagerAdapter= new MyPagerAdapter(layouts,getActivity());

    viewPager.setAdapter(myPagerAdapter);

    Dots_Layout=(LinearLayout)view.findViewById(R.id.dotsLayout);

    buttonNext=(Button)view.findViewById(R.id.buttonNext);
    buttonNext.setOnClickListener(this);

    createDots(0);


    if(viewPager.getCurrentItem()==0){

        buttonBirthDate= (Button) view.findViewById(R.id.editTextBirthdate);

        buttonBirthDate.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                datePicker();
            }
        });
    }


    viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener(){
       @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels){

       }

        @Override
        public void onPageSelected(int i) {
            /*if(i==0){


            }*/

            createDots(i);
            if(i==layouts.length-1){
                buttonNext.setText("Finish");
            }else{
                buttonNext.setText("Next");
            }
        }

        @Override
        public void onPageScrollStateChanged(int i) {

        }


    });



    return view;

}

if I write these codes in the if(i==0) loop, button works after return back from question2 layout.

        buttonBirthDate= (Button) view.findViewById(R.id.editTextBirthdate);

        buttonBirthDate.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                datePicker();
            }
        });

How can I use button of question1 layout?

Mey
  • 1
  • 2
  • you should write the `onClickListener` code in the `instantiateItem` in the `ViewPagerAdapter` class – Khalid Taha Nov 24 '17 at 00:39
  • could you make sure "editTextBirthdate" is inside "survey_layout"? – YinKiet Nov 24 '17 at 03:08
  • No, it is in the "question1" layout @YinKiet – Mey Nov 24 '17 at 18:05
  • Thank you, I tried your comment, yes button works but I have to use some methods to take dates after clicking button, should I write the datePicker() method in the MyPagerAdapter class? @KhalidTaha – Mey Nov 24 '17 at 18:10
  • I found the solution that is in the link, thanks for helping: https://stackoverflow.com/a/16074152/5606440 – Mey Nov 25 '17 at 15:51

0 Answers0