Android:在 Recycler 视图中调用 Intent 时应用程序崩溃
Android : App Crashed When Intent called inside the Recycler View
我创建了一个回收器视图,它在列表视图中显示来自 Sqlite 的图像和文本,为了将选定的项目名称传递给新的 Activity 我使用 Intent 传递数据,但是当我的 Intent 被调用时,我的应用程序是崩溃并显示 Attempt to invoke virtual method 'void android.content.Context.startActivity(android.content.Intent)' on a null object reference
回收者视图
ArrayList<byte[]> list_image;
private LayoutInflater mInflater;
private Context context;
private ArrayList<String> list_name;
public void onBindViewHolder(@NonNull MyViewHolder holder, final int position) {
holder.listname.setText(String.valueOf(list_name.get(position)));
Bitmap bmp = BitmapFactory.decodeByteArray(list_image.get(position), 0, list_image.get(position).length);
ImageView image = holder.imgname;
image.setImageBitmap(bmp);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(view.getContext(),AddItems.class);
intent.putExtra("listname", String.valueOf(list_name.get(position)));
context.startActivity(intent);
}
});
}
添加项目
lisname = findViewById(R.id.listname_dis);
Intent intent = getIntent();
String dataTransmited=intent.getStringExtra("listname");
lisname.setText(dataTransmited);
}
logcat :
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.content.Context.startActivity(android.content.Intent)' on a null object reference
at com.Karthi.check.CustomAdapter.onClick(CustomAdapter.java:76)
因为您的“上下文”为空试试这个:
view.getContext().startActivity(intent)
而不是这个:
context.startActivity(intent)
在您的自定义适配器中初始化 private Activity activity;
然后
public CustomAdapter(Activity activity,....){
this.activity = activity;
......
.....
....
}
use activity.startActivity(intent); in your OnClickListerner
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(view.getContext(),AddItems.class);
intent.putExtra("listname", String.valueOf(list_name.get(position)));
activity.startActivity(intent);
}
也在你的主activity添加
CustomAdapter ca = new CustomAdapter(MainActivity.this,this,......)
我创建了一个回收器视图,它在列表视图中显示来自 Sqlite 的图像和文本,为了将选定的项目名称传递给新的 Activity 我使用 Intent 传递数据,但是当我的 Intent 被调用时,我的应用程序是崩溃并显示 Attempt to invoke virtual method 'void android.content.Context.startActivity(android.content.Intent)' on a null object reference
回收者视图
ArrayList<byte[]> list_image;
private LayoutInflater mInflater;
private Context context;
private ArrayList<String> list_name;
public void onBindViewHolder(@NonNull MyViewHolder holder, final int position) {
holder.listname.setText(String.valueOf(list_name.get(position)));
Bitmap bmp = BitmapFactory.decodeByteArray(list_image.get(position), 0, list_image.get(position).length);
ImageView image = holder.imgname;
image.setImageBitmap(bmp);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(view.getContext(),AddItems.class);
intent.putExtra("listname", String.valueOf(list_name.get(position)));
context.startActivity(intent);
}
});
}
添加项目
lisname = findViewById(R.id.listname_dis);
Intent intent = getIntent();
String dataTransmited=intent.getStringExtra("listname");
lisname.setText(dataTransmited);
}
logcat :
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.content.Context.startActivity(android.content.Intent)' on a null object reference
at com.Karthi.check.CustomAdapter.onClick(CustomAdapter.java:76)
因为您的“上下文”为空试试这个:
view.getContext().startActivity(intent)
而不是这个:
context.startActivity(intent)
在您的自定义适配器中初始化 private Activity activity;
然后
public CustomAdapter(Activity activity,....){
this.activity = activity;
......
.....
....
}
use activity.startActivity(intent); in your OnClickListerner
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(view.getContext(),AddItems.class);
intent.putExtra("listname", String.valueOf(list_name.get(position)));
activity.startActivity(intent);
}
也在你的主activity添加
CustomAdapter ca = new CustomAdapter(MainActivity.this,this,......)