繁体   English   中英

无法从 Java Android Studio 中的另一个 class 调用变量

[英]Cannot called a variable from another class in Java Android Studio

我正在做一个 function,它将实时删除一条记录 Firebase。 一个人只能通过知道.getKey()生成的唯一 ID 来删除自己的记录。 但是,当我想实现RecordID删除时,我无法调用RecordID 有谁知道我在这里做错了什么? 谢谢。

错误我的错误演示,变量在我的删除 function 中无法识别

我得到 class

package com.example.sossystem;

public class SosRecords {
    String RecordID;
    String FullName;
    String PhoneNumber;
    String EmailAddress;


    public SosRecords(){

    }


    public SosRecords(String recordID, String fullName, String phoneNumber, String emailAddress) {
        RecordID = recordID;
        FullName = fullName;
        PhoneNumber = phoneNumber;
        EmailAddress = emailAddress;
    }

    public String getRecordID() {
        return RecordID;
    }

    public String getFullName() {
        return FullName;
    }

    public String getPhoneNumber() {
        return PhoneNumber;
    }

    public String getEmailAddress() {
        return EmailAddress;
    }
}


错误

错误显示在Stop button

 btnStopSOS.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                onStop();
                stopLocationUpdates();
                deleteRecords(RecordID);
                result.setText("Dashboard");
                btnStartSOS.setEnabled(true);
                btnStopSOS.setEnabled(false);
            }
        });


    }

    private void deleteRecords(String fullName) {
        DatabaseReference delRecord = FirebaseDatabase.getInstance().getReference("Records").child(RecordID);
        delRecord.removeValue();
        Toast.makeText(MainActivity.this, "The SOS Request is Stopped!", Toast.LENGTH_SHORT).show();

    }

我的代码

        btnStartSOS.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                onStart();

                //GET ALL INFORMATION FROM FIRESTORE AND SEND TO REALTIME DATABASE
                if(FirebaseAuth.getInstance().getCurrentUser()!= null){
                    DocumentReference df = FirebaseFirestore.getInstance().collection("Users").document(FirebaseAuth.getInstance().getCurrentUser().getUid());
                    df.get().addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
                        @Override
                        public void onSuccess(DocumentSnapshot documentSnapshot) {
                            if(documentSnapshot.getString("FullName")!= null){

                                String id = reff.push().getKey();
                                Log.d(TAG, "asdasd"+id);
                                SosRecords sosRecords = new SosRecords(id,documentSnapshot.getString("FullName"), (documentSnapshot.getString("PhoneNumber")), (documentSnapshot.getString("UserEmail")  ));
                                reff.child(id).setValue(sosRecords);
                                btnStopSOS.setEnabled(true);
                                Toast.makeText(MainActivity.this, "You're are now activating SOS request !", Toast.LENGTH_SHORT).show();

                                }
                            }
                            
                    }).addOnFailureListener(new OnFailureListener() {
                        @Override
                        public void onFailure(@NonNull Exception e) {
                            FirebaseAuth.getInstance().signOut();
                            startActivity(new Intent(getApplicationContext(),Login.class));
                            finish();
                        }
                    });
                }

                if(ContextCompat.checkSelfPermission(MainActivity.this,Manifest.permission.ACCESS_FINE_LOCATION)== PackageManager.PERMISSION_GRANTED){
                    checkSettingsAndStartLocationUpdates();
                }else{
                    askLocationPermission();
                }
                }
        });

        btnStopSOS.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                onStop();
                stopLocationUpdates();
                deleteRecords(RecordID);
                result.setText("Dashboard");
                btnStartSOS.setEnabled(true);
                btnStopSOS.setEnabled(false);
            }
        });


    }

    private void deleteRecords(String fullName) {
        DatabaseReference delRecord = FirebaseDatabase.getInstance().getReference("Records").child(RecordID);
        delRecord.removeValue();
        Toast.makeText(MainActivity.this, "The SOS Request is Stopped!", Toast.LENGTH_SHORT).show();

    }
    SosRecords sosrecords = new SosRecords();

    btnStopSOS.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    onStop();
                    stopLocationUpdates();
                    deleteRecords(sosrecords.getRecordID);
                    result.setText("Dashboard");
                    btnStartSOS.setEnabled(true);
                    btnStopSOS.setEnabled(false);
                }
            });
    
    
        }

我通过将 Id 的值设置为我的RecordID成功地解决了它

 sosrecords.setRecordID(id);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM