意图放额外的方法使应用程序崩溃 [英] intent put extra method is crashing the app

查看:67
本文介绍了意图放额外的方法使应用程序崩溃的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这就是我想做的, 从Mydata获取图像链接,将其显示在图像视图中,然后通过意向放置额外方法将图像链接发送到webview活动,并从该图像链接在webview中显示图像.

So here is what I want to do , get the image link from Mydata, display it in image view and then send the image link via intent put extra method to webview activity and display the image in webview from that image link.

图像正在图像视图中加载,但是每当我尝试通过intent putEtra方法发送image_link时,应用程序就会在onClick方法上崩溃.

The images are loading in Image Views but whenever I try to send the image_link via intent putEtra method the app is crashing on onClick method.

我认为intent.putExtra("image",my_data.get(position).getImage_link());出了点问题 可能是我没有获得图像链接参考

I think something is wrong with intent.putExtra("image",my_data.get(position).getImage_link()); may be I am not getting the image link refernece

我的数据代码,

package com.techhgeeks.techhgeeks;


public class MyData {

    private int id;
    private String description, image_link;

    public MyData(int id, String description, String image_link) {
        this.id = id;
        this.description = description;
        this.image_link = image_link;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public String getImage_link() {
        return image_link;
    }

    public void setImage_link(String image_link) {
        this.image_link = image_link;
    }
}

适配器代码,

package com.techhgeeks.techhgeeks;
import android.content.Intent;


import android.support.v7.widget.RecyclerView;
import android.content.Context;
import android.widget.ImageView;
import android.widget.TextView;

import android.view.LayoutInflater;
import java.util.List;
import com.bumptech.glide.Glide;
import android.view.View;
import android.view.ViewGroup;





public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder>   {
    private Context context;
    private List<MyData> my_data;

    public MyAdapter(Context context, List<MyData> my_data) {
        this.context = context;
        this.my_data = my_data;
    }



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

        View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.recycler_child,parent,false);

        final ViewHolder holder = new ViewHolder(itemView);
        itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int position = holder.getAdapterPosition();
                Intent intent = new Intent(context,article.class);
                intent.putExtra("image",my_data.get(position).getImage_link());
                context.startActivity(intent);

            }
        });

        return new ViewHolder(itemView);
    }

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

        holder.description.setText(my_data.get(position).getDescription());
        Glide.with(context).load(my_data.get(position).getImage_link()).into(holder.imageView);



    }

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




    public  class ViewHolder extends  RecyclerView.ViewHolder{

        public TextView description;
        public ImageView imageView;

        public ViewHolder(View itemView) {
            super(itemView);
            description = (TextView) itemView.findViewById(R.id.textView);
            imageView = (ImageView) itemView.findViewById(R.id.image);
        }


    }


}

推荐答案

您应该在onBindViewHolder方法中设置onClick侦听器.

You should be setting your onClick listener in the onBindViewHolder method.

尝试一下:

package com.techhgeeks.techhgeeks;
import android.content.Intent;


import android.support.v7.widget.RecyclerView;
import android.content.Context;
import android.widget.ImageView;
import android.widget.TextView;

import android.view.LayoutInflater;
import java.util.List;
import com.bumptech.glide.Glide;
import android.view.View;
import android.view.ViewGroup;





public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder>   {
    private Context context;
    private List<MyData> my_data;

    public MyAdapter(Context context, List<MyData> my_data) {
        this.context = context;
        this.my_data = my_data;
    }



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

        View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.recycler_child,parent,false);

        final ViewHolder holder = new ViewHolder(itemView);
        return new ViewHolder(itemView);
    }

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

        holder.description.setText(my_data.get(position).getDescription());
        Glide.with(context).load(my_data.get(position).getImage_link()).into(holder.imageView);
        holder.view.setOnClickListener(new MyOnItemClickListener(position));
    }

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




    public  class ViewHolder extends  RecyclerView.ViewHolder{

        public TextView description;
        public ImageView imageView;
        public View view;

        public ViewHolder(View itemView) {
            super(itemView);
            view = itemView;
            description = (TextView) itemView.findViewById(R.id.textView);
            imageView = (ImageView) itemView.findViewById(R.id.image);
        }


    }

     private class MyOnItemClickListener implements View.OnClickListener {
        private int position;
        public MyOnItemClickListener(int position) {
            this.position = position;
        }

        @Override
        public void onClick(View v) {
            Intent intent = new Intent(context,article.class);
            intent.putExtra("image",my_data.get(position).getImage_link());
                context.startActivity(intent);
        }
    }
}

这篇关于意图放额外的方法使应用程序崩溃的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆