Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android NullPointerException void io.realm.RealmChangeListener.onChange()文件_Android_Nullpointerexception_Realm_Realm Migration - Fatal编程技术网

Android NullPointerException void io.realm.RealmChangeListener.onChange()文件

Android NullPointerException void io.realm.RealmChangeListener.onChange()文件,android,nullpointerexception,realm,realm-migration,Android,Nullpointerexception,Realm,Realm Migration,我试图在我的项目中实现Realm数据库,我有一个类,其中包含用于在数据库中添加项的方法,我使用该类存储这些方法并在片段中调用它们,但当我这样做时,我得到一个错误: java.lang.NullPointerException: Attempt to invoke interface method 'void io.realm.RealmChangeListener.onChange()' on a null object reference 我做错了什么 public class Reposi

我试图在我的项目中实现Realm数据库,我有一个类,其中包含用于在数据库中添加项的方法,我使用该类存储这些方法并在片段中调用它们,但当我这样做时,我得到一个错误:

java.lang.NullPointerException: Attempt to invoke interface method 'void io.realm.RealmChangeListener.onChange()' on a null object reference
我做错了什么

public class Repositorio extends GlobalActivity {


    private RealmChangeListener realmListener;
    public Realm realm;
    private Context context;



    public Repositorio() {
    }

    public Repositorio(Context context) {
        this.context = context;
        this.realm = Realm.getDefaultInstance();
        this.realmListener = new RealmChangeListener() {
            @Override
            public void onChange() {
                Log.i("realmtest", "some values in the database have been changed");
            }
        };

        this.realm.addChangeListener(realmListener);
    }


    public void addCliente(String nome, String local, String estado, String telefone, String email, String tipo) {
        realm.beginTransaction();

        Pessoa mPessoa = realm.createObject(Pessoa.class);
        mPessoa.setId(UUID.randomUUID().toString());
        mPessoa.setNome(nome);
        mPessoa.setCidade(local);
        mPessoa.setEstado(estado);
        mPessoa.setTelefone(telefone);
        mPessoa.setEmail(email);
        mPessoa.setTipo(tipo);

        realm.commitTransaction();


        Toast.makeText(context, "Cliente adicionado com sucesso", Toast.LENGTH_LONG).show();
    }

    @Override
    public void onPause() {
        super.onPause();

        realm.removeChangeListener(realmListener);

    }

    @Override
    public void onResume() {
        super.onResume();

        realm.addChangeListener(realmListener);

    }


    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (realm != null) {
            realm.close();
            realm = null;
        }
    }


}
片段:

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        final View v = inflater.inflate(R.layout.cadastra_produtos, container, false);

        mRepositorio = new Repositorio(getActivity());

        novocliente = (TextView) v.findViewById(R.id.novocliente);



        novocliente.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                mRepositorio.addCliente("ZÉ", "LALAAL", "SC", "3333-3333", "teste@teste.com", "Pessoa Física");
            }
        });

        return v;
    }
全球:

public class GlobalActivity extends AppCompatActivity {

    public Ferramentas mFerramentas;
    public Realm realm;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);


        mFerramentas = new Ferramentas();
        realm = Realm.getDefaultInstance();



    }


}

Android框架使用默认构造函数(公共且无参数)实例化
Repositorio
活动

Repositorio
的默认构造函数未将侦听器实例分配给
realmListener
字段

因此,当调用
onResume()
时,
realm.addChangeListener(realmListener)
相当于
realm.addChangeListener(null)


您不应该定义默认构造函数以外的构造函数。另外,您不应该手动实例化活动(Repositorio)。

我已经编辑了这个问题,请看一看