31-08-20, 01:01 AM
السلام عليكم
لدي مشكلة بحفظ قيم المصفوفة عند استخدامها داخل دالة الحصول على البيانات من الفايربيس
داخل دالة احضار القيم من الفايربيس يتم اعطاء القيم للمصفوفة بشكل سليم. و لكن عند استدعاء المصفوفة من قبل دالة اخرى تأتي فارغة و ليس بها قيم. ماهو الحل للابقاء على قيم المصفوفة كما تم وضعها عند استدعاءها من قبل دالة أخرى.
هذا هو الكود
اقوم بتعريف المصفوفة في الجلوبال:
ثم اقوم باعطاء المصفوفة قيمها التي احضرها من فايربيس:
لدي مشكلة بحفظ قيم المصفوفة عند استخدامها داخل دالة الحصول على البيانات من الفايربيس
داخل دالة احضار القيم من الفايربيس يتم اعطاء القيم للمصفوفة بشكل سليم. و لكن عند استدعاء المصفوفة من قبل دالة اخرى تأتي فارغة و ليس بها قيم. ماهو الحل للابقاء على قيم المصفوفة كما تم وضعها عند استدعاءها من قبل دالة أخرى.
هذا هو الكود
اقوم بتعريف المصفوفة في الجلوبال:
كود :
String[] myarray = new String[10]; // as global
ثم اقوم باعطاء المصفوفة قيمها التي احضرها من فايربيس:
كود :
public void setmyArray()
{
// final String[] myarray = new String[10];
final int[] c = {0};
em = "q@q.com";
ps = "123456";
DatabaseReference ref2 = database.getReference().child(senders_child);
ref2.addValueEventListener(new ValueEventListener() {
@SuppressLint("SetTextI18n")
@Override
public void onDataChange(@NonNull final DataSnapshot dataSnapshot2) {
for (DataSnapshot snapshot2 : dataSnapshot2.getChildren()) {
final String txt_uid = Objects.requireNonNull(snapshot2.getKey());
DatabaseReference ref3 = database.getReference().child(txt_uid).child(child_users);
ref3.addValueEventListener(new ValueEventListener() {
@SuppressLint("SetTextI18n")
@Override
public void onDataChange(@NonNull final DataSnapshot dataSnapshot3) {
for (DataSnapshot snapshot3 : dataSnapshot3.getChildren()) {
String txt_email = Objects.requireNonNull(snapshot3.getValue()).toString();
if (txt_email.equals(em + " " + ps)) {
myarray[c[0]] = txt_uid;
c[0]++;
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
ثم اريد دالة اخرى تعود لي بقيم المصفوفة//
public void usemyArray(){setmyArray();Toast.makeText(action_receiver2.this, "0= " + myarray[0],Toast.LENGTH_LONG).show();}