从intent getExtras传递的值会将第一个Activity的null值返回给Second Activity

时间:2018-04-18 14:47:18

标签: java android arrays android-intent

我试图将用户名从BlogRecycle适配器传递给Next活动。但在第二个Activity中它返回null值。

这是BlogRecycleAdapter类代码



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

    public List<BlogPost> blog_list;
    public Context context;

    private FirebaseFirestore firebaseFirestore;
    private FirebaseAuth firebaseAuth;
    private PopupWindow popWindow;

    public BlogRecyclerAdapter(List<BlogPost> blog_list){

        this.blog_list = blog_list;


    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.blog_list_item, parent, false);
        context = parent.getContext();
        firebaseFirestore = FirebaseFirestore.getInstance();
        firebaseAuth = FirebaseAuth.getInstance();
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(final ViewHolder holder, int position) {

        holder.setIsRecyclable(false);

        final String blogPostId = blog_list.get(position).BlogPostId;
        final String currentUserId = firebaseAuth.getCurrentUser().getUid();

        String desc_data = blog_list.get(position).getDesc();
        holder.setDescText(desc_data);

        String image_url = blog_list.get(position).getImage_url();
        String thumbUri = blog_list.get(position).getImage_thumb();
        holder.setBlogImage(image_url, thumbUri);

        String user_id = blog_list.get(position).getUser_id();
        //User Data will be retrieved here...



        firebaseFirestore.collection("Users").document(user_id).get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
            @Override
            public void onComplete(@NonNull Task<DocumentSnapshot> task) {

                if(task.isSuccessful()){

                    String userName = task.getResult().getString("name");
                    String userImage = task.getResult().getString("image");

                    holder.setUserData(userName, userImage);


                } else {

                    //Firebase Exception

                }

            }
        });




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

    public class ViewHolder extends RecyclerView.ViewHolder {

        private View mView;
        private TextView blogUserName;
        private CircleImageView blogUserImage;


        public ViewHolder(View itemView) {
            super(itemView);
            mView = itemView;

            blogLikeBtn = mView.findViewById(R.id.blog_like_btn);
            blogCommentBtn = mView.findViewById(R.id.blog_comment_icon);

        }


        public void setUserData(final String name, final String image) {
            blogUserImage = mView.findViewById(R.id.blog_user_image);
            blogUserName = mView.findViewById(R.id.blog_user_name);

            blogUserName.setText(name);

            RequestOptions placeholderOption = new RequestOptions();
            placeholderOption.placeholder(R.drawable.profile_placeholder);

            if (!((Activity) context).isFinishing()) {
                Glide.with(context).applyDefaultRequestOptions(placeholderOption).load(image).into(blogUserImage);
            }

            mView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Intent intent = new Intent(context, MainActivity.class);
                    intent.putExtra("user_name", name);
                    intent.putExtra("user_image", image);
                    context.startActivity(intent);
                }
            });
        }

}
&#13;
&#13;
&#13;

和我的第二个活动类是

    final String name = getIntent().getStringExtra("user_name");

    Toast.makeText(getBaseContext(), "Logged in as"+name, Toast.LENGTH_SHORT).show();

我正在尝试将BlogRecycle Adapter类中的name用于第二个活动类,但是当我将值从BlogRecycle Adapter传递给第二个Activity并编译并运行app时,它会返回。

Logged in as !null

感谢任何帮助。提前谢谢。

1 个答案:

答案 0 :(得分:0)

我认为代码行:

Intent intent = new Intent(context, MainActivity.class);

应该是:

Intent intent = new Intent(context, SecondActivity.class);