Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
安卓工作室“;Can';t转换类型为java.lang.String的对象";崩溃错误_Java_Android - Fatal编程技术网

安卓工作室“;Can';t转换类型为java.lang.String的对象";崩溃错误

安卓工作室“;Can';t转换类型为java.lang.String的对象";崩溃错误,java,android,Java,Android,我对编码很陌生,在YouTube上找到了一个教程。糟糕的是,它没有按应有的方式工作。应用程序在调试控制台中不断崩溃,并显示以下消息: E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.proprietaire.lovechatting, PID: 30321 com.google.firebase.database.DatabaseException: Can't co

我对编码很陌生,在YouTube上找到了一个教程。糟糕的是,它没有按应有的方式工作。应用程序在调试控制台中不断崩溃,并显示以下消息:

E/AndroidRuntime: FATAL EXCEPTION: main
              Process: com.example.proprietaire.lovechatting, PID: 30321
              com.google.firebase.database.DatabaseException: Can't convert object of type java.lang.String to type com.example.proprietaire.lovechatting.Friends
                  at com.google.android.gms.internal.zg.zzb(Unknown Source:278)
                  at com.google.android.gms.internal.zg.zza(Unknown Source:0)
                  at com.google.firebase.database.DataSnapshot.getValue(Unknown Source:10)
                  at com.firebase.ui.database.ClassSnapshotParser.parseSnapshot(ClassSnapshotParser.java:22)
                  at com.firebase.ui.database.ObservableSnapshotArray.getObject(ObservableSnapshotArray.java:141)
                  at com.firebase.ui.database.CachingObservableSnapshotArray.getObject(CachingObservableSnapshotArray.java:40)
                  at com.firebase.ui.database.FirebaseRecyclerAdapter.getItem(FirebaseRecyclerAdapter.java:127)
                  at com.firebase.ui.database.FirebaseRecyclerAdapter.onBindViewHolder(FirebaseRecyclerAdapter.java:164)
                  at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:6673)
                  at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:6714)
                  at android.support.v7.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:5647)
                  at android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5913)
                  at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5752)
                  at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5748)
                  at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2232)
                  at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1559)
                  at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1519)
                  at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:614)
                  at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3812)
                  at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:3529)
                  at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:4082)
                  at android.view.View.layout(View.java:19758)
                  at android.view.ViewGroup.layout(ViewGroup.java:6079)
                  at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1083)
                  at android.view.View.layout(View.java:19758)
                  at android.view.ViewGroup.layout(ViewGroup.java:6079)
                  at android.support.v4.view.ViewPager.onLayout(ViewPager.java:1769)
                  at android.view.View.layout(View.java:19758)
                  at android.view.ViewGroup.layout(ViewGroup.java:6079)
                  at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1083)
                  at android.view.View.layout(View.java:19758)
                  at android.view.ViewGroup.layout(ViewGroup.java:6079)
                  at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
                  at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
                  at android.view.View.layout(View.java:19758)
                  at android.view.ViewGroup.layout(ViewGroup.java:6079)
                  at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1791)
                  at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1635)
                  at android.widget.LinearLayout.onLayout(LinearLayout.java:1544)
                  at android.view.View.layout(View.java:19758)
                  at android.view.ViewGroup.layout(ViewGroup.java:6079)
                  at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
                  at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
                  at android.view.View.layout(View.java:19758)
                  at android.view.ViewGroup.layout(ViewGroup.java:6079)
                  at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1791)
                  at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1635)
                  at android.widget.LinearLayout.onLayout(LinearLayout.java:1544)
                  at android.view.View.layout(View.java:19758)
                  at android.view.ViewGroup.layout(ViewGroup.java:6079)
                  at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
                  at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
我不知道如何修理它。这是我朋友给我的代码:

public class Friends
{
    public String date;

    public Friends()
    {

    }

    public Friends(String date)
    {
        this.date = date;
    }

    public String getDate()
    {
        return date;
    }

    public void setDate(String date)
    {
        this.date = date;
    }
}
下面是朋友片段:

public class FriendsFragment extends Fragment
{
private RecyclerView myFriendsList;

private DatabaseReference FriendsReference;
private DatabaseReference UsersReference;
private FirebaseAuth mAuth;

String online_user_id;
private View myMainView;


public FriendsFragment() {
    // Required empty public constructor
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState)
{
    myMainView = inflater.inflate(R.layout.fragment_friends, container, false);

    myFriendsList = (RecyclerView) myMainView.findViewById(R.id.friends_list);

    mAuth = FirebaseAuth.getInstance();
    online_user_id = mAuth.getCurrentUser().getUid();

    FriendsReference = FirebaseDatabase.getInstance().getReference().child("Friends").child(online_user_id);
    FriendsReference.keepSynced(true);
    UsersReference = FirebaseDatabase.getInstance().getReference().child("Users");
    UsersReference.keepSynced(true);

    myFriendsList.setLayoutManager(new LinearLayoutManager(getContext()));


    // Inflate the layout for this fragment
    return myMainView;
}

@Override
public void onStart()
{
    super.onStart();

    FirebaseRecyclerAdapter<Friends, FriendsViewHolder> firebaseRecyclerAdapter
            =new FirebaseRecyclerAdapter<Friends, FriendsViewHolder>
            (
                    Friends.class,
                    R.layout.all_users_display_layout,
                    FriendsViewHolder.class,
                    FriendsReference
            )
    {
        @Override
        protected void populateViewHolder(FriendsViewHolder viewHolder, Friends model, int position)
        {
            viewHolder.setDate(model.getDate());

            String list_user_id = getRef(position).getKey();

            UsersReference.child(list_user_id).addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot)
                {
                    String userName = dataSnapshot.child("user_name").getValue().toString();
                    String thumbImage = dataSnapshot.child("user_thumb_image").getValue().toString();

                    FriendsViewHolder.setUserName(userName);
                    FriendsViewHolder.setThumbImage(thumbImage, getContext());
                }

                @Override
                public void onCancelled(DatabaseError databaseError)
                {

                }
            });
        }
    };

    myFriendsList.setAdapter(firebaseRecyclerAdapter);
}


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

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

        mView = itemView;
    }


    public void setDate(String date)
    {
        TextView sinceFriendsDate = (TextView) mView.findViewById(R.id.all_users_status);
        sinceFriendsDate.setText(date);
    }

    public static void setUserName(String userName)
    {
        TextView userNameDisplay = (TextView) mView.findViewById(R.id.all_users_username);
        userNameDisplay.setText(userName);
    }

    public static void setThumbImage(final String thumbImage, final Context ctx)
    {
        final CircleImageView thumb_image = (CircleImageView) mView.findViewById(R.id.all_users_profile_image);


        Picasso.with(ctx).load(thumbImage).networkPolicy(NetworkPolicy.OFFLINE).placeholder(R.drawable.default_profile)
                .into(thumb_image, new Callback() {
                    @Override
                    public void onSuccess()
                    {

                    }

                    @Override
                    public void onError()
                    {
                        Picasso.with(ctx).load(thumbImage).placeholder(R.drawable.default_profile)
                                .into(thumb_image);
                    }
                });
    }
}
}
公共类FriendsFragment扩展了片段
{
私人回收站查看我的朋友列表;
私人数据库参考朋友参考;
私有数据库引用用户引用;
私人消防队;
字符串online\u user\u id;
私有视图myMainView;
公益碎片(){
//必需的空公共构造函数
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState)
{
myMainView=充气机。充气(R.layout.fragment\u friends,container,false);
myFriendsList=(RecyclerView)myMainView.findViewById(R.id.friends\u列表);
mAuth=FirebaseAuth.getInstance();
在线用户id=mAuth.getCurrentUser().getUid();
FriendsReference=FirebaseDatabase.getInstance().getReference().child(“朋友”).child(在线用户id);
FriendsReference.keepSynced(真);
UsersReference=FirebaseDatabase.getInstance().getReference().child(“用户”);
UsersReference.keepSynced(true);
setLayoutManager(新的LinearLayoutManager(getContext());
//为该碎片膨胀布局
返回myMainView;
}
@凌驾
public void onStart()
{
super.onStart();
FirebaseRecyclerAdapter FirebaseRecyclerAdapter
=新的FirebaseRecyclerAdapter
(
朋友们,同学们,
R.layout.所有用户显示布局,
FriendsViewHolder.class,
朋友参考
)
{
@凌驾
受保护的void populateViewHolder(友元viewHolder、友元模型、int位置)
{
setDate(model.getDate());
String list_user_id=getRef(position).getKey();
UsersReference.child(list\u user\u id).addValueEventListener(新的ValueEventListener()){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot)
{
字符串userName=dataSnapshot.child(“用户名”).getValue().toString();
字符串thumbImage=dataSnapshot.child(“user_thumb_image”).getValue().toString();
设置用户名(userName);
setThumbImage(thumbImage,getContext());
}
@凌驾
已取消的公共void(DatabaseError DatabaseError)
{
}
});
}
};
myFriendsList.setAdapter(firebaseRecyclerAdapter);
}
公共静态类FriendsViewHolder扩展了RecyclerView.ViewHolder
{
静态视图mView;
公众朋友查看文件夹(查看项目视图)
{
超级(项目视图);
mView=项目视图;
}
公共无效设置日期(字符串日期)
{
TextView-sinceFriendsDate=(TextView)mView.findViewById(R.id.all\u users\u status);
sinceFriendsDate.setText(日期);
}
公共静态void setUserName(字符串用户名)
{
TextView用户名显示=(TextView)mView.findviewbyd(R.id.all\u users\u username);
usernamesplay.setText(用户名);
}
公共静态void setThumbImage(最终字符串thumbImage,最终上下文ctx)
{
最终CircleImageView thumb\u image=(CircleImageView)mView.findViewById(R.id.all\u users\u profile\u image);
毕加索.with(ctx).load(thumbImage).networkPolicy(networkPolicy.OFFLINE).placeholder(R.drawable.default\u配置文件)
.into(thumb_图像,新回调(){
@凌驾
成功时的公共无效()
{
}
@凌驾
公开无效
{
毕加索.with(ctx).load(thumbImage).placeholder(R.drawable.default_配置文件)
.into(拇指图像);
}
});
}
}
}

如果有人有任何想法,请告诉我。就像我说的,当有人发送好友请求时,另一个人打开应用程序,当他打开任何片段时,除非设置和用户列表,否则就会崩溃。我试图编码(复制)的是一个好友片段,当好友请求被接受时,它会在其中显示您的好友。

我认为这会起作用

String userName = dataSnapshot.child("user_name").getValue(String.class); 
String thumbImage = dataSnapshot.child("user_thumb_image").getValue(String.class); 

这里,getValue()方法将此快照中包含的数据作为本机类型返回。您正在尝试将对象转换为字符串,而不是无效的类型转换。请使用同一类中的另一个方法,如果String.class作为参数传递,该方法将返回字符串数据类型中的值。请解释它将如何以及为什么“执行此操作”。OP可能需要理解,而不是“魔法”。