У меня есть глобальная переменная с именем "myEmail", и я хочу изменить ее значение внутри метода, когда при этом значение переменной изменяется, но только внутри метода (я проверил это с помощью журнала), но при попытке использоватьПеременная снова после изменения значения равна нулю.
Я понятия не имею, каковы причины этой проблемы.Я пытался вызвать метод onCreate, так как думал, что переменная get вызывается до изменения значения, но проблема осталась прежней.
Вот мой код
public class messagesFragment extends Fragment {
private FirebaseFirestore db = FirebaseFirestore.getInstance();
private String uid = FirebaseAuth.getInstance().getUid();
private CollectionReference messageRef = db.collection("messages");
private View v;
private RecyclerView recyclerView;
private messageAdapter mAdapter;
private String myEmail;
private FloatingActionButton addmsg;
public messagesFragment() {
}
// Creating the fragment view.
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
v = inflater.inflate(R.layout.messages_fragment, container, false);
addmsg = (FloatingActionButton) v.findViewById(R.id.sendmsgfab);
addmsg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getActivity(), createmessageActivity.class);
startActivity(intent);
}
});
getemail(); // Here the variable myEmail is null.
setupRecycler();
return v;
}
private void getemail(){
DocumentReference documentReference = db.collection("users").document(uid);
documentReference.get().addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
@Override
public void onSuccess(final DocumentSnapshot documentSnapshot) {
myEmail = documentSnapshot.get("email").toString();
// Here the variable myEmail is not null.
}
});
}
private void setupRecycler() {
Query query = messageRef.whereEqualTo("receiver", myEmail);
FirestoreRecyclerOptions<message> options = new FirestoreRecyclerOptions.Builder<message>()
.setQuery(query, message.class)
.build();
mAdapter = new messageAdapter(options);
recyclerView = (RecyclerView) v.findViewById(R.id.messagesRecycler);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
recyclerView.setAdapter(mAdapter);
}
@Override
public void onStart() {
super.onStart();
mAdapter.startListening();
}
@Override
public void onStop() {
super.onStop();
mAdapter.stopListening();
}
}