Невозможно передать строку для следующего действия - PullRequest
0 голосов
/ 12 мая 2018

1-е действие

firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<AllUsers, UsersViewHolder>(options) {
        @Override
        protected void onBindViewHolder(@NonNull UsersViewHolder holder, int position, @NonNull AllUsers model) {
            holder.setName(model.getName());
            holder.setStatus(model.getStatus());


            final String user_id = getRef(position).getKey();

            holder.mView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("Users").child(user_id);

                    reference.addListenerForSingleValueEvent(new ValueEventListener() {
                        @Override
                        public void onDataChange(DataSnapshot dataSnapshot) {
                            name = dataSnapshot.child("Name").getValue().toString();
                        }
                        @Override
                        public void onCancelled(DatabaseError databaseError) {
                        }
                    });


                    Intent intent = new Intent(getActivity(), Chat.class);
                    intent.putExtra("Recievers_Id", user_id);
                    intent.putExtra("Recievers_Name", name);

                    startActivity(intent);
                }
            });

        }

2-е действие

name.setText((getIntent().getStringExtra("Recievers_Name")));
MessageRecieverId = getIntent().getStringExtra("Recievers_Id");

Идентификатор передается, но имя не ... я уверен, что его проблема заключается в извлечении его из базы данных

Снимок экрана - https://ibb.co/mBKZLd

я могу получить идентификатор из базы данных, так как он является родителем ... но я не могу получить его дочерний элемент, который называется "Имя" ... может кто-то указатьгде я ошибся

Ответы [ 2 ]

0 голосов
/ 12 мая 2018

addListenerForSingleValueEvent метод называется асинхронно . Вы вводите имя в Intent, прежде чем получите его значение. Вы должны начать свою деятельность после того, как вы получите имя. Начните чат-активность внутри метода onDataChange.

holder.mView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("Users").child(user_id);

                reference.addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {
                      name = dataSnapshot.child("Name").getValue().toString();
                      Intent intent = new Intent(getActivity(), Chat.class);
                      intent.putExtra("Recievers_Id", user_id);
                      intent.putExtra("Recievers_Name", name);

                      startActivity(intent);

                    }
                    @Override
                    public void onCancelled(DatabaseError databaseError) {
                    }
                });
0 голосов
/ 12 мая 2018

Этот addListenerForSingleValueEvent метод вызывается асинхронно. Вы помещаете name в Intent, прежде чем получите его значение. Вы должны начать свой Activity после того, как вы получите имя. Начните чат Activity внутри onDataChange метода.

            holder.mView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("Users").child(user_id);

                reference.addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {
                      name = dataSnapshot.child("Name").getValue().toString();
                      Intent intent = new Intent(getActivity(), Chat.class);
                      intent.putExtra("Recievers_Id", user_id);
                      intent.putExtra("Recievers_Name", name);

                      startActivity(intent);

                    }
                    @Override
                    public void onCancelled(DatabaseError databaseError) {
                    }
                });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...