关于调用接口的方法来实现其他类空指针异常 [英] null pointer exception on calling interface method implemented in other class

查看:1476
本文介绍了关于调用接口的方法来实现其他类空指针异常的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图调用接口的方法 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(),对话);
    }
}
 

错误日志

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

这篇关于关于调用接口的方法来实现其他类空指针异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆