【问题标题】:no suitable method found for addOnSuccessListener没有找到适合 addOnSuccessListener 的方法
【发布时间】:2021-01-11 01:00:04
【问题描述】:

我是 Android Studio 的初学者。当我尝试遵循某人的代码时出现错误。我的代码是这样的:

getReference.child("Owner").child(getUserID).child("Ternak").push()
                        .setValue(new LiveStockData(getNamaTernak, getNamaPeternak, getJenisTernak))
                        .addOnSuccessListener(this, new OnSuccessListener() {
                            @Override
                            public void onSuccess(Object o) {
                                //Peristiwa ini terjadi saat user berhasil menyimpan datanya kedalam Database
                                namaTernak.setText("");
                                namaPeternak.setText("");
                                jenisTernak.setText("");
                                Toast.makeText(addDataActivity.this, "Data Tersimpan", Toast.LENGTH_SHORT).show();
                            }
                        });

然后我得到了这个错误:

error: no suitable method found for addOnSuccessListener(<anonymous OnClickListener>,<anonymous OnSuccessListener<Void>>)
                        .addOnSuccessListener(this, new OnSuccessListener<Void>() {
                        ^
method Task.addOnSuccessListener(Executor,OnSuccessListener<? super Void>) is not applicable
  (argument mismatch; <anonymous OnClickListener> cannot be converted to Executor)
method Task.addOnSuccessListener(Activity,OnSuccessListener<? super Void>) is not applicable
  (argument mismatch; <anonymous OnClickListener> cannot be converted to Activity)

我应该怎么做才能解决这个错误?

【问题讨论】:

    标签: java android android-fragments


    【解决方案1】:

    我认为你不需要提供上下文作为onSuccessListener中的第一个参数,所以试试这样:

    getReference.child("Owner").child(getUserID).child("Ternak").push()
                            .setValue(new LiveStockData(getNamaTernak, getNamaPeternak, getJenisTernak))
                            .addOnSuccessListener(new OnSuccessListener<Void>() {
                                @Override
                                public void onSuccess(Object o) {
                                    //Peristiwa ini terjadi saat user berhasil menyimpan datanya kedalam Database
                                    namaTernak.setText("");
                                    namaPeternak.setText("");
                                    jenisTernak.setText("");
                                    Toast.makeText(addDataActivity.this, "Data Tersimpan", Toast.LENGTH_SHORT).show();
                                }
                            });
    

    我所做的只是改变了这一行:

    .addOnSuccessListener(this, new OnSuccessListener() {
    

    到这一行:

    .addOnSuccessListener(new OnSuccessListener<Void>() {
    

    编辑:根据本文档,您不需要提供this 作为第一个参数。因此,请检查与 Firebase 相关的任何内容:https://firebase.google.com/docs/database/android/read-and-write#add_a_completion_callback

    还要注意这些教程,因为 Firebase 会随着时间的推移而发生变化,因此有些教程可能已经过时了。查看文档以获取更多知识和对其工作原理的理解:https://firebase.google.com/docs/guides

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-30
      • 2014-08-27
      • 2021-06-19
      • 2015-11-26
      • 2019-09-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多