在其他类中实现的调用接口方法上的空指针异常

My *_*God 1 java android nullpointerexception

我试图调用getFailureDialog()接口的方法OnSelectedListener.该方法实现于MainActivity.java.但是当我调用该方法时,我得到空指针异常.

我知道它因为OnSelectedListener仍未初始化而你正在调用getFailureDialog()未初始化的对象.显然,接口方法永远不会被初始化.但那我如何getFailureDialog()从班上调用这个方法Common.java呢?

我只在下面放置相关的源代码 -

源代码:

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(); 
}
Run Code Online (Sandbox Code Playgroud)

Common.java

public class Common
{
OnSelectedListener mCallback;


    public interface OnSelectedListener 
    {
        public void getFailureDialog();
    }

    public void myRecord(String email)
    {
        mCallback.getFailureDialog();  //null pointer exception here
    }
}
Run Code Online (Sandbox Code Playgroud)

MainActivity.java

public class MainActivity implements Common.OnSelectedListener
{

@Override
    public void getFailureDialog()
    {

        RecordFailure fd = new RecordFailure(); 
        fd.show(getSupportFragmentManager(), "dialog");
    }
}
Run Code Online (Sandbox Code Playgroud)

错误日志

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)
Run Code Online (Sandbox Code Playgroud)

Kyl*_*lar 7

OnSelectedListener mCallback;
Run Code Online (Sandbox Code Playgroud)

永远不会被初始化,或者正在使用空值进行初始化.

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.
    }
}
Run Code Online (Sandbox Code Playgroud)