gpt4 book ai didi

java - Illegal IllegalStateException : The specified child already has a parent. 您必须首先在子级的父级上调用removeView()

转载 作者:行者123 更新时间:2023-12-01 22:49:12 25 4
gpt4 key购买 nike

所以我得到了这个错误(就像其他 50,000 个人一样),并且我查看了他们的错误/答案,但仍然不知道如何解决我的问题。有人可以查看我的代码并告诉我错误在哪里/我应该如何解决它?谢谢。

哦,我是编码新手,所以我不知道错误在哪里...Logcat 没有告诉我哪一行/fragment/类/任何内容导致崩溃。我很抱歉发布了合法的每一行代码。

如果有人想向我解释在世界上哪里可以找到这个错误,那也很好。多谢你们!


package com.e.whosin.Adapter;

import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.fragment.app.FragmentActivity;
import androidx.recyclerview.widget.RecyclerView;

import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;
import com.e.whosin.CommentsActivity;
import com.e.whosin.FollowersActivity;
import com.e.whosin.Fragment.PostDetailFragment;
import com.e.whosin.Fragment.ProfileFragment;
import com.e.whosin.Model.Post;
import com.e.whosin.Model.User;
import com.e.whosin.R;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

public class PostAdapter extends RecyclerView.Adapter<PostAdapter.ViewHolder>{

public Context mContext;
public List<Post> mPost;

private FirebaseUser firebaseUser;

public PostAdapter(Context context, List<Post> post) {
mContext = context;
mPost = post;
}

@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(mContext).inflate(R.layout.post_item, viewGroup, false);
return new PostAdapter.ViewHolder(view);
}

@Override
public void onBindViewHolder(@NonNull final ViewHolder viewHolder, int i) {

firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
final Post post = mPost.get(i);

Glide.with(mContext).load(post.getPostimage())
.apply(new RequestOptions().placeholder(R.drawable.portraitplaceholder))
.into(viewHolder.post_image);

if (post.getDescription().equals("")){
viewHolder.description.setVisibility(View.GONE);
} else {
viewHolder.description.setVisibility(View.VISIBLE);
viewHolder.description.setText(post.getDescription());
}

publisherInfo(viewHolder.image_profile, viewHolder.username, viewHolder.publisher, post.getPublisher());
isLikes(post.getPostid(), viewHolder.like);
nrLikes(viewHolder.likes, post.getPostid());
getComments(post.getPostid(), viewHolder.comments);
isSaved(post.getPostid(), viewHolder.save);

viewHolder.image_profile.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
SharedPreferences.Editor editor = mContext.getSharedPreferences("PREFS", Context.MODE_PRIVATE).edit();
editor.putString("profileid", post.getPublisher());
editor.apply();

((FragmentActivity)mContext).getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
new ProfileFragment()).commit();
}
});

viewHolder.username.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
SharedPreferences.Editor editor = mContext.getSharedPreferences("PREFS", Context.MODE_PRIVATE).edit();
editor.putString("profileid", post.getPublisher());
editor.apply();

((FragmentActivity)mContext).getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
new ProfileFragment()).commit();
}
});

viewHolder.publisher.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
SharedPreferences.Editor editor = mContext.getSharedPreferences("PREFS", Context.MODE_PRIVATE).edit();
editor.putString("profileid", post.getPublisher());
editor.apply();

((FragmentActivity)mContext).getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
new ProfileFragment()).commit();
}
});

viewHolder.post_image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SharedPreferences.Editor editor = mContext.getSharedPreferences("PREFS", Context.MODE_PRIVATE).edit();
editor.putString("postid", post.getPostid());
editor.apply();

((FragmentActivity)mContext).getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
new PostDetailFragment()).commit();
}
});

viewHolder.save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (viewHolder.save.getTag().equals("save")){
FirebaseDatabase.getInstance().getReference().child("Saves").child(firebaseUser.getUid())
.child(post.getPostid()).setValue(true);
} else {
FirebaseDatabase.getInstance().getReference().child("Saves").child(firebaseUser.getUid())
.child(post.getPostid()).removeValue();
}
}
});

viewHolder.like.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (viewHolder.like.getTag().equals("like")){
FirebaseDatabase.getInstance().getReference().child("Likes").child(post.getPostid())
.child(firebaseUser.getUid()).setValue(true);
addNotifications(post.getPublisher(), post.getPostid());
} else {
FirebaseDatabase.getInstance().getReference().child("Likes").child(post.getPostid())
.child(firebaseUser.getUid()).removeValue();
}
}
});

viewHolder.comment.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(mContext, CommentsActivity.class);
intent.putExtra("postid", post.getPostid());
intent.putExtra("publisherid", post.getPublisher());
mContext.startActivity(intent);
}
});

viewHolder.comments.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(mContext, CommentsActivity.class);
intent.putExtra("postid", post.getPostid());
intent.putExtra("publisherid", post.getPublisher());
mContext.startActivity(intent);
}
});

viewHolder.likes.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(mContext, FollowersActivity.class);
intent.putExtra("id", post.getPostid());
intent.putExtra("title", "likes");
mContext.startActivity(intent);
}
});
}

@Override
public int getItemCount() {
return mPost.size();
}

public class ViewHolder extends RecyclerView.ViewHolder{

public ImageView image_profile, post_image, like, comment, save;
public TextView username, likes, publisher, description, comments;

public ViewHolder(@NonNull View itemView) {
super(itemView);

image_profile = itemView.findViewById(R.id.image_profile);
post_image = itemView.findViewById(R.id.post_image);
like = itemView.findViewById(R.id.like);
comment = itemView.findViewById(R.id.comment);
save = itemView.findViewById(R.id.save);
username = itemView.findViewById(R.id.username);
likes = itemView.findViewById(R.id.likes);
publisher = itemView.findViewById(R.id.publisher);
description = itemView.findViewById(R.id.description);
comments = itemView.findViewById(R.id.comments);
}
}

private void getComments(String postid, final TextView comments){
DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("Comments").child(postid);

reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
comments.setText("View All "+dataSnapshot.getChildren() + " Comments");
}

@Override
public void onCancelled(@NonNull DatabaseError databaseError) {

}
});
}

//To like posts and to show how many likes each post has
private void isLikes(String postid, final ImageView imageView){

final FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser();

DatabaseReference reference = FirebaseDatabase.getInstance().getReference()
.child("Likes")
.child(postid);

reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.child(firebaseUser.getUid()).exists()){
imageView.setImageResource(R.drawable.ic_liked);
imageView.setTag("liked");
} else {
imageView.setImageResource(R.drawable.ic_like);
imageView.setTag("like");
}
}

@Override
public void onCancelled(@NonNull DatabaseError databaseError) {

}
});
}

private void nrLikes (final TextView likes, String postid){
DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("Likes")
.child(postid);
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
likes.setText(dataSnapshot.getChildrenCount()+" likes");
}

@Override
public void onCancelled(@NonNull DatabaseError databaseError) {

}
});
}

private void publisherInfo(final ImageView image_profile, final TextView username, final TextView publisher, String userid){
DatabaseReference reference = FirebaseDatabase.getInstance().getReference("Users").child(userid);

reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
User user = dataSnapshot.getValue(User.class);
Glide.with(mContext).load(user.getImageurl()).into(image_profile);
username.setText(user.getUsername());
publisher.setText(user.getUsername());
}

@Override
public void onCancelled(@NonNull DatabaseError databaseError) {

}
});
}

private void addNotifications(String userid, String postid){
DatabaseReference reference = FirebaseDatabase.getInstance().getReference("Notifications").child(userid);

HashMap<String, Object> hashMap = new HashMap<>();
hashMap.put("userid", firebaseUser.getUid());
hashMap.put("text", "liked your post");
hashMap.put("postid", postid);
hashMap.put("ispost", true);

reference.push().setValue(hashMap);
}

private void isSaved(final String postid, final ImageView imageView){
FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser();

DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("Saves")
.child(firebaseUser.getUid());

reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.child(postid).exists()){
imageView.setImageResource(R.drawable.ic_save_black);
imageView.setTag("saved");
} else {
imageView.setImageResource(R.drawable.ic_save);
imageView.setTag("save");
}
}

@Override
public void onCancelled(@NonNull DatabaseError databaseError) {

}
});
}
}

E/AndroidRuntime:致命异常:main 进程:com.e.whosin,PID:23744 java.lang.IllegalStateException:指定的子级已经有父级。您必须首先对子级的父级调用removeView()。 在 android.view.ViewGroup.addViewInner(ViewGroup.java:5099) 在 android.view.ViewGroup.addView(ViewGroup.java:4930) 在 android.view.ViewGroup.addView(ViewGroup.java:4870) 在 android.view.ViewGroup.addView(ViewGroup.java:4843) 在 androidx.fragment.app.FragmentManagerImpl$2.run(FragmentManagerImpl.java:150) 在 android.os.Handler.handleCallback(Handler.java:907) 在 android.os.Handler.dispatchMessage(Handler.java:105) 在 android.os.Looper.loop(Looper.java:216) 在 android.app.ActivityThread.main(ActivityThread.java:7625) 在 java.lang.reflect.Method.invoke( native 方法) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:524) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:987)


package com.e.whosin.Fragment;

import android.content.Context;
import android.net.Uri;
import android.os.Bundle;

import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.text.Editable;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;

import com.e.whosin.Adapter.UserAdapter;
import com.e.whosin.Model.User;
import com.e.whosin.R;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.Query;
import com.google.firebase.database.ValueEventListener;

import java.util.ArrayList;
import java.util.List;


public class SearchFragment extends Fragment {

private RecyclerView recyclerView;
private UserAdapter userAdapter;
private List<User> mUsers;

EditText search_bar;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_search, container, true);

recyclerView = view.findViewById(R.id.recycler_view);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));

search_bar = view.findViewById(R.id.search_bar);

mUsers = new ArrayList<>();
userAdapter = new UserAdapter(getContext(), mUsers, false);
recyclerView.setAdapter(userAdapter);

readUsers();
search_bar.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int i, int i1, int i2) {

}

@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
searchUsers(charSequence.toString().toLowerCase());
}

@Override
public void afterTextChanged(Editable editable) {

}
});

return view;
}

private void searchUsers(String s){
Query query = FirebaseDatabase.getInstance().getReference("Users").orderByChild("username")
.startAt(s)
.endAt(s+"\uf8ff");

query.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
mUsers.clear();
for (DataSnapshot snapshot : dataSnapshot.getChildren()){
User user = snapshot.getValue(User.class);
mUsers.add(user);
}

userAdapter.notifyDataSetChanged();
}

@Override
public void onCancelled(@NonNull DatabaseError databaseError) {

}
});
}

private void readUsers(){

DatabaseReference reference = FirebaseDatabase.getInstance().getReference("Users");
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (search_bar.getText().toString().equals("")){
mUsers.clear();
for (DataSnapshot snapshot : dataSnapshot.getChildren()){
User user = snapshot.getValue(User.class);
mUsers.add(user);
}

userAdapter.notifyDataSetChanged();
}
}

@Override
public void onCancelled(@NonNull DatabaseError databaseError) {

}
});
}
}

最佳答案

所以我一直在研究它并找到了解决我的问题的方法,即在 SearchFragment 中将 AttachToRoot 从 True 更改为 False...有人可以解释为什么会这样吗?

关于java - Illegal IllegalStateException : The specified child already has a parent. 您必须首先在子级的父级上调用removeView(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58463738/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com