-1

Hi in the below where click on this fragment my list view getting null pointer. If it is normal activity it is working fine.it is crashing my app

can any one please help me where i did the mistake.

public class HomeFragement extends Fragment {

    EditText et_building;
    TextView Add;
    ListView lv;
    ArrayList<String> arrayList;
    ArrayAdapter<String> adapter;



    public HomeFragement() {
    }

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

        ((NavigationViewActivity) getActivity()).setActionBarTitle("ADD BUILDING");

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

        init();

        return rootView;
    }

    private void clickListener() {
        Add.setOnClickListener (new View.OnClickListener ( ) {
            @Override
            public void onClick(View v) {
                String result=et_building.getText ().toString ();
                arrayList.add (result);
                adapter.notifyDataSetChanged ();

            }
        });
    }

    private void init() {
        et_building=(EditText)getActivity ().findViewById (R.id.build_name);
        Add=(TextView)getActivity ().findViewById (R.id.addbuild);
        lv=(ListView)getActivity ().findViewById (R.id.list_building);
        arrayList=new ArrayList<String> ();
        adapter=new ArrayAdapter<String> (getActivity (),android.R.layout.simple_list_item_1,arrayList);
        lv.setAdapter(adapter);
        clickListener();
    }
Phantômaxx
  • 37,901
  • 21
  • 84
  • 115

2 Answers2

0

Problem found - Issue in declaring id. use rootView instead of getActivity()

Do this

    init(rootView);

And this method should be

private void init(View rootView ) {
        et_building=(EditText)rootView.findViewById (R.id.build_name);
        Add=(TextView)rootView.findViewById (R.id.addbuild);
        lv=(ListView)rootView.findViewById (R.id.list_building);
        arrayList=new ArrayList<String> ();
        adapter=new ArrayAdapter<String> (getActivity (),android.R.layout.simple_list_item_1,arrayList);
        lv.setAdapter(adapter);
        clickListener();
    }
Quick learner
  • 10,632
  • 4
  • 45
  • 55
0

Try to put this your init() code inside onCreateView() like:

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

    ((NavigationViewActivity) getActivity()).setActionBarTitle("ADD BUILDING");

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

    et_building=(EditText)rootView.findViewById (R.id.build_name);
    Add=(TextView)rootView.findViewById (R.id.addbuild);
    lv=(ListView)rootView.findViewById (R.id.list_building);
    arrayList=new ArrayList<String> ();
    adapter=new ArrayAdapter<String> (getActivity(),android.R.layout.simple_list_item_1,arrayList);
    lv.setAdapter(adapter);

    return rootView;
}

and use rootView instead of getActivity() to creating new object

Dinesh Shingadiya
  • 988
  • 1
  • 8
  • 23