关于调用接口的方法来实现其他类空指针异常来实现、指针、接口、异常

由网友(流年╭ァ吶么伤)分享简介:我试图调用接口的方法 getFailureDialog() OnSelectedListener 。该方法是在 MainActivity.java 实施。但是,当我调用该方法,我得到空指针异常。 我知道它是因为 OnSelectedListener 仍然没有初始化,你调用 getFailureDialog()未初...

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

我知道它是因为 OnSelectedListener 仍然没有初始化,你调用 getFailureDialog()未初始化的对象。显然,接口方式永远不会初始化。但后来我怎么调用该方法 getFailureDialog()从我的课 Common.java

我只把相关的源$低于C $ C -

来源$ C ​​$ C:

SharedFragment.java

 公共类SharedFragment扩展DialogFragment
{
    捆绑包= getArguments();
    最后弦乐电子邮件= bundle.getString(电子邮件);

    线程t =新主题(新的Runnable()
    {
        公共无效的run(){
        common.myRecord(电子邮件);
    }
    }); t.start();
}
 

Common.java

 公共类常见
{
OnSelectedListener mCallback;


    公共接口OnSelectedListener
    {
        公共无效getFailureDialog();
    }

    公共无效myRecord(字符串电子邮件)
    {
        mCallback.getFailureDialog(); //空指针异常这里
    }
}
 

MainActivity.java

 公共类MainActivity实现Common.OnSelectedListener
{

@覆盖
    公共无效getFailureDialog()
    {

        RecordFailure的fd =新RecordFailure();
        fd.show(getSupportFragmentManager(),对话);
    }
}
 
Action中注入了Service接口,在调用Service的方法时报空指针异常

错误日志

  03-22 15:50:​​39.032:W / dalvikvm(20796):主题ID = 16:线程退出与未捕获的异常(组= 0x4204c450)
03-22 15:50:​​39.052:E / AndroidRuntime(20796):致命异常:线程30126
03-22 15:50:​​39.052:E / AndroidRuntime(20796):显示java.lang.NullPointerException
03-22 15:50:​​39.052:E / AndroidRuntime(20796):在com.cornmail.util.Common.myRecord(Common.java:2062)
 

解决方案

  OnSelectedListener mCallback;
 

永远不会得到初始化,或正在与空值进行初始化。

 公共类常见
{
    OnSelectedListener mCallback =新OnSelectedListener(){
        公共无效getFailureDialog(){
            JOptionPane.showMessageDialog(NULL,发生的错误。);
        }
    };


    公共接口OnSelectedListener
    {
        公共无效getFailureDialog();
    }

    公共无效myRecord(字符串电子邮件)
    {
        mCallback.getFailureDialog(); //现在这个工作。
    }
}
 

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)

解决方案

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.
    }
}

阅读全文

相关推荐

最新文章