2

When i use onClickListener on a Button inside a Fragment and use intent to open an Activity, it gives NullPointerException.

This is my code

public class TabFragment extends Fragment{

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

            View rootView = inflater.inflate(R.layout.tabs, container, false);

           Button tab1=(Button) getView().findViewById(R.id.tab1upgradeCost);
           tab1.setOnClickListener(new View.OnClickListener() {
               @Override
               public void onClick(View v) {
                   Intent i = new Intent(getActivity(), MainActivity.class);
                  getActivity().startActivity(i);
               }
           });
            return rootView;
        }
    }

4 Answers4

2

I think problem is with your view that getView may return null.

replace your code with this. I didn't test your code but may be it help.

public class TabFragment extends Fragment{

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

        View rootView = inflater.inflate(R.layout.tabs, container, false);

       Button tab1=(Button) rootView.findViewById(R.id.tab1upgradeCost);
       tab1.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View v) {
               Intent i = new Intent(getActivity(), MainActivity.class);
              getActivity().startActivity(i);
           }
       });
        return rootView;
    }
}
Vishal Chhodwani
  • 2,567
  • 5
  • 27
  • 40
2

Your getting NLP because tab1 is not initialized with right view

Don't use

Button tab1=(Button) getView().findViewById(R.id.tab1upgradeCost);

In onCreateView() getView() will retrun null because still fragment is not initlized.

Instead use

Button tab1=(Button) rooView.findViewById(R.id.tab1upgradeCost);
Rahul Devanavar
  • 3,917
  • 4
  • 32
  • 61
1

Change

Button tab1=(Button) getView().findViewById(R.id.tab1upgradeCost);

to

Button tab1=(Button) rootView.findViewById(R.id.tab1upgradeCost);
Andrej Jurkin
  • 2,216
  • 10
  • 19
-1
 startActivity(new Intent(getActivity(),Actvty_Ground.class));
Nirmit
  • 189
  • 8