null pointer exception on calling interface method implemented in other class

18,600
OnSelectedListener mCallback;

is never getting initialized, or is being initialized with a null value.

public class Common
{
    OnSelectedListener mCallback = new OnSelectedListener(){
        public void getFailureDialog(){
            JOptionPane.showMessageDialog(null, "An Error Has Occurred.");
        }
    };


    public interface OnSelectedListener 
    {
        public void getFailureDialog();
    }

    public void myRecord(String email)
    {
        mCallback.getFailureDialog();  //now this works.
    }
}
Share:
18,600
My God
Author by

My God

Sr. Software Engineer (Information Technology) Technologies - Ruby ON Rails, Java/J2EE, Android Development. Certifications - Sun Certified Java Programmer (SCJP) Experience - 7 years Far better is it to dare mighty things, to win glorious triumphs, even though checkered by failure... than to rank with those poor spirits who neither enjoy nor suffer much, because they live in a gray twilight that knows not victory nor defeat.

Updated on June 05, 2022

Comments

  • My God
    My God almost 2 years

    I am trying to call the method getFailureDialog() of the interface OnSelectedListener. The method is implemented in MainActivity.java. But when I call the method, I am getting the null pointer exception.

    I know that its because OnSelectedListener is still not initialized and you are calling getFailureDialog() on uninitialized object. Obviously, interface methods are never initialized. But then how do I call the method getFailureDialog() from my class Common.java?

    I am placing only the relevant source code below-

    Source code:

    SharedFragment.java

    public class SharedFragment extends DialogFragment 
    {       
        Bundle bundle = getArguments();
        final String email = bundle.getString("email");
    
        Thread t=new Thread(new Runnable() 
        {
            public void run() {
            common.myRecord(email);
        }
        });   t.start(); 
    }
    

    Common.java

    public class Common
    {
    OnSelectedListener mCallback;
    
    
        public interface OnSelectedListener 
        {
            public void getFailureDialog();
        }
    
        public void myRecord(String email)
        {
            mCallback.getFailureDialog();  //null pointer exception here
        }
    }
    

    MainActivity.java

    public class MainActivity implements Common.OnSelectedListener
    {
    
    @Override
        public void getFailureDialog()
        {
    
            RecordFailure fd = new RecordFailure(); 
            fd.show(getSupportFragmentManager(), "dialog");
        }
    }
    

    Error Log

    03-22 15:50:39.032: W/dalvikvm(20796): threadid=16: thread exiting with uncaught exception (group=0x4204c450)
    03-22 15:50:39.052: E/AndroidRuntime(20796): FATAL EXCEPTION: Thread-30126
    03-22 15:50:39.052: E/AndroidRuntime(20796): java.lang.NullPointerException
    03-22 15:50:39.052: E/AndroidRuntime(20796):    at com.cornmail.util.Common.myRecord(Common.java:2062)