Я не могу получить имя профиля и фотографию с поиском запроса из базы данных Firebase в Android Studio.Приложение перестает работать.Любое исправление? - PullRequest
0 голосов
/ 25 декабря 2018

Я копирую всю активность ниже, findfriendsactivity.java, чтобы искать и запрашивать имя, профиль и изображение из базы данных Firebase в Android Studio после запуска приложения.Приложения перестают работать, когда я набираю и ищу имя.Приложение работало нормально до этого действия.Как я могу это исправить?

package com.example.socialnetwork.socialnetwork;

import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.TextView;
import android.widget.Toast;

import com.firebase.ui.database.FirebaseRecyclerAdapter;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.Query;
import com.squareup.picasso.Picasso;

import de.hdodenhof.circleimageview.CircleImageView;

public class FindFriendsActivity extends AppCompatActivity {

private Toolbar mToolbar;

private ImageButton SearchButton;
private EditText SearchInputText;

private RecyclerView SearchResultList;

private DatabaseReference allUsersDatabaseRef;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_find_friends);


    allUsersDatabaseRef = FirebaseDatabase.getInstance().getReference().child("Users");


    mToolbar = (Toolbar) findViewById(R.id.find_friends_appbar_layout);
    setSupportActionBar(mToolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setTitle("Find Friends");

    SearchResultList = (RecyclerView) findViewById(R.id.search_result_list);
    SearchResultList.setHasFixedSize(true);
    SearchResultList.setLayoutManager(new LinearLayoutManager(this));

    SearchButton = (ImageButton) findViewById(R.id.search_people_friends_button);
    SearchInputText = (EditText) findViewById(R.id.search_box_input);


    SearchButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v)
        {
            String searchBoxInput = SearchInputText.getText().toString();

            SearchPeopleAndFriends(searchBoxInput);
        }
    });
}


private void SearchPeopleAndFriends(String searchBoxInput)
{
    Toast.makeText(this, "Searching....", Toast.LENGTH_LONG).show();

    Query searchPeopleandFriendsQuery = allUsersDatabaseRef.orderByChild("fullname")
            .startAt(searchBoxInput).endAt(searchBoxInput + "\uf8ff");

    FirebaseRecyclerAdapter<FindFriends, FindFriendsViewHolder> firebaseRecyclerAdapter
            = new FirebaseRecyclerAdapter<FindFriends, FindFriendsViewHolder>
            (
                    FindFriends.class,
                    R.layout.all_users_display_layout,
                    FindFriendsViewHolder.class,
                    searchPeopleandFriendsQuery
            )
    {
        @Override
        protected void populateViewHolder(FindFriendsViewHolder viewHolder, FindFriends model, int position) {

            viewHolder.setFullName(model.getFullname());
            viewHolder.setStatus(model.getStatus());
            viewHolder.setProfileimage(getApplicationContext(), model.getProfileimage());
        }
    };
    SearchResultList.setAdapter(firebaseRecyclerAdapter);
}



public static class FindFriendsViewHolder extends RecyclerView.ViewHolder
{
    View mView;

    public FindFriendsViewHolder(View itemView) {
        super(itemView);

        mView = mView;
    }


    public void setProfileimage(Context ctx, String profileimage) {

        CircleImageView myImage = (CircleImageView) mView.findViewById(R.id.all_users_profile_image);
        Picasso.with(ctx).load(profileimage).placeholder(R.drawable.profile).into(myImage);
    }


    public void setFullName(String fullname) {

        TextView myName = (TextView) mView.findViewById(R.id.all_users_profile_full_name);
        myName.setText(fullname);
    }


    public void setStatus(String status) {

        TextView myStatus = (TextView) mView.findViewById(R.id.all_users_status);
        myStatus.setText(status);
    }
}

}

Теперь я копирую сообщение об ошибке, которое появляется при поиске имени в поиске друзей после запуска приложения.Приложение перестает работать и возвращается на главную.

E / AndroidRuntime: FATAL EXCEPTION: main Процесс: com.example.socialnetwork.socialvegan, PID: 9563 java.lang.NullPointerException: попытка вызвать виртуальный метод 'android.view.View android.view.View.findViewById (int) 'для ссылки на пустой объект по адресу com.example.socialnetwork.socialnetwork.FindFriendsActivity $ FindFriendsViewHolder.setFullName (FindFriendsActivity.java:118) по адресу com.example.socialnetwork.socialnetwork.FindFriendsActivityHind.IndFence.ind $ 2.Java: 88) в com.example.socialnetwork.socialnetwork.FindFriendsActivity $ 2.populateViewHolder (FindFriendsActivity.java:84) в com.firebase.ui.database.FirebaseRecyclerAdapter.onBindViewHolder (FirebaseRecyclerAdapter.java7pp.suav.su5).widget.RecyclerView $ Adapter.onBindViewHolder (RecyclerView.java:6673) в android.support.v7.widget.RecyclerView $ Adapter.bindViewHolder (RecyclerView.java:6714) в android.support.v7.widget.RecyclerView $ Recycler.derBDRecyclerView.java:5647) по адресу android.support.v7.widget.RecyclerView $ Recycler.tryGetViewHolderForPositionByDeadline (RecyclerView.java:5913) по адресу android.support.v7.widget.RecyclerView $ Recycler.getViewForPosition (RecyclerView.java:775supp.java:575supp. at and android7. At at..widget.RecyclerView $ Recycler.getViewForPosition (RecyclerView.java:5748) в android.support.v7.widget.LinearLayoutManager $ LayoutState.next (LinearLayoutManager.java:2232) в android.support.v7.widget.agerarLayMayLayMoutLayoutMayCout.java: 1559) по адресу android.support.v7.widget.LinearLayoutManager.fill (LinearLayoutManager.java:1519) по адресу android.support.v7.widget.LinearLayoutManager.onLayoutChildren (LinearLayoutManager.java:6supp.vava:6supp.widget.RecyclerView.dispatchLayoutStep2 (RecyclerView.java:3812) в android.support.v7.widget.RecyclerView.dispatchLayout (RecyclerView.java:3529) в android.support.v7.widget.RecyclerView.consumePendingUpateUp для использования в качестве агентана android.support.v7.widget.RecyclerView $ 1.run (RecyclerView.java: 356) на android.view.Choreographer $ CallbackRecord.run (Choreographer.java:858) на android.view.Choreographer.doCallbacks (Choreographer.java:670) на android.view.Choreographer.doFrame (Хореограф: Хореограф:603) на android.view.Choreographer $ FrameDisplayEventReceiver.run (Choreographer.java:844) на android.os.Handler.handleCallback (Handler.java:739) на android.os.Handler.dispatchMessage (Handler.java:95) наandroid.os.Looper.loop (Looper.java:148) на android.app.ActivityThread.main (ActivityThread.java:5476) на java.lang.reflect.Method.invoke (собственный метод) на com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:726) в com.android.internal.os.ZygoteInit.main (ZygoteInit.java:616)I / Process: отправка сигнала.PID: 9563 SIG: 9 Приложение прекращено.

Возможно, кто-то может найти решение этой проблемы.Все build.gradle выглядит нормально.Я не вижу никакой ошибки.Я новичок в базе данных Firebase.Может быть ошибка при запросе базы данных firebase.

1 Ответ

0 голосов
/ 25 декабря 2018

mView - null.Это связано с тем, что эта строка кода в FindFriendsViewHolder ничего не делает:

mView = mView;

mView запускает null и остается null навсегда, потому что для него никогда не устанавливается ненулевое значение.

Похоже, вы хотите использовать itemView вместо ViewHolder.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...