14

I always get an Error in my Android Project.

java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.app.Activity.findViewById(int)' on a null object reference

In my MainActivity i am calling the class FragmentStart.

FragmentStart.class

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;

public class FragmentStart extends Fragment {

    //Define Listview
    private ListView startList;
    private String[] stringList;
    Activity activity = getActivity();

    public FragmentStart() {
        //
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_start, container, false);

        // Create ListView start
        startList = (ListView) rootView.findViewById(R.id.startList);
        stringList = getResources().getStringArray(R.array.startList);

        if (activity != null) {
            ArrayAdapter<String> objAdapter = new ArrayAdapter<String>(activity, android.R.layout.simple_list_item_1, stringList);
            startList.setAdapter(objAdapter);
            startList.setOnItemClickListener(new AdapterView.OnItemClickListener() {

                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    switch (startList.getPositionForView(view)) {

                        case 0:
                            // ...
                            break;

                    }
                }
            });
        }
        // Create ListView end

        //New Entry
        Button add = (Button) activity.findViewById(R.id.add);
        add.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                Intent myIntent = new Intent(view.getContext(), addItem.class);
                startActivityForResult(myIntent, 0);
            }

        });

        return rootView;
    }
}

0

4 Answers 4

19

In addition to what @Selvin pointed out, it looks like this:

Button add = (Button) activity.findViewById(R.id.add);

...should be changed to this:

Button add = (Button) rootView.findViewById(R.id.add);
Sign up to request clarification or add additional context in comments.

2 Comments

correct, if the Button is located inside the Fragment's layout
It is inside the layout. Thanks! I just changed it to this and i changed the other one to getActivity. Everything ist fine now!
3

Use the following code:

 listView1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

       //     selectedPosition = position;

            View newTypeView=listView1.getChildAt(position-listView1.getFirstVisiblePosition()).findViewById(R.id.RelativeLayout);

            if (newTypeView.getClass().getName().toString().contains("RelativeLayout")) {


                if (lastTouchedVw != null)
                    lastTouchedVw.setBackgroundColor(Color.parseColor("#ffffff"));
                 // mainImageView.setImageURI(Uri.parse(al.get(position).toString()));
                //bigImageRelativeLayoutVw.setBackgroundColor(Color.parseColor("#ffb000"));
                    newTypeView.setBackgroundResource(R.drawable.cellbg);

                    lastTouchedVw = newTypeView;
            }

Comments

1

It's very simple

public class MainActivity extends AppCompatActivity {



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button btn1 = (Button) findViewById(R.id.button1);

        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
              Intent intent = new Intent(MainActivity.this, YourNextClass.class);
                startActivity(intent);
            }
        });

    }
}

2 Comments

Sorry, but it does not look relevant without explanation. Can you explain how does your answer solve this problem ?
@RohitSingh i am new in java i can't explain it in depth. I got the same error which is mentioned above, and with this solution i fixed it.
0

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;

public class FragmentStart extends Fragment {

    //Define Listview
    private ListView startList;
    private String[] stringList;
    Activity activity = getActivity();

    public FragmentStart() {
        //
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_start, container, false);

        // Create ListView start
        startList = (ListView) rootView.findViewById(R.id.startList);
        stringList = getResources().getStringArray(R.array.startList);

        if (activity != null) {
            ArrayAdapter<String> objAdapter = new ArrayAdapter<String>(activity, android.R.layout.simple_list_item_1, stringList);
            startList.setAdapter(objAdapter);
            startList.setOnItemClickListener(new AdapterView.OnItemClickListener() {

                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    switch (startList.getPositionForView(view)) {

                        case 0:
                            // ...
                            break;

                    }
                }
            });
        }
        // Create ListView end

        //New Entry
        Button add = (Button) activity.findViewById(R.id.add);
        add.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                Intent myIntent = new Intent(view.getContext(), addItem.class);
                startActivityForResult(myIntent, 0);
            }

        });

        return rootView;
    }
}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.