gpt4 book ai didi

java - 无法将数据从 AppCompatDialogFragment 传递到 Fragment (NullPointerException)

转载 作者:行者123 更新时间:2023-12-02 09:03:00 25 4
gpt4 key购买 nike

我正在尝试将 Cloud Firestore 数据从警报对话框传递到 Fragment。 Firestore 数据存储为 ListView 。当我单击 ListView 中的项目时,我可以读取 Firestore 数据,但无法通过界面将其传递到我的 fragment 。

我尝试过的:

我尝试在两个 fragment (警报对话框 fragment 和 fragment )之间进行经典通信。我想使用接口(interface)将数据从 ListView 传递到 fragment 。

我面临什么样的错误:我目前面临“尝试在空对象引用上调用接口(interface)方法”

我的代码:

   private SendData listener;

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// System.out.println(arrayList.get(position));

String item_name = arrayList.get(position);

db.collection("FoodName").document(item_name).get()
.addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
@Override
public void onSuccess(DocumentSnapshot documentSnapshot) {

String calories = documentSnapshot.getString(CALORIES);
listener.ApplyData(calories);
}
});

public interface SendData
{
void ApplyData (String calories);
}


@Override
public void onAttach(@NonNull Context context) {
super.onAttach(context);
try {
listener = (SendData) context;
}
catch (ClassCastException e)
{
System.out.println("onAttach: ClassCastException : " + e.getMessage());
}

完整错误日志:

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.smartmove, PID: 25860
java.lang.NullPointerException: Attempt to invoke interface method 'void com.example.smartmove.AlertDialogFoodList$SendData.ApplyData(java.lang.String)' on a null object reference
at com.example.smartmove.AlertDialogFoodList$2$1.onSuccess(AlertDialogFoodList.java:109)
at com.example.smartmove.AlertDialogFoodList$2$1.onSuccess(AlertDialogFoodList.java:103)
at com.google.android.gms.tasks.zzn.run(Unknown Source:4)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

最佳答案

创建AlertDialog后即可传递监听器。

mDialog.setListener(this);

在您的 AlterDialog 类中,

public void setListener(SendData listener){
this.listener = listener;
}

关于java - 无法将数据从 AppCompatDialogFragment 传递到 Fragment (NullPointerException),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60032389/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com