Bonjour, j'ai une application qui possède un recyclerView contenant des données provenant de ma base SQLite. Je les récupère avec un curseur. J'aimerai savoir comment je peux les envoyer vers la nouvelle activité lorsque je clique sur un item du recyclerView.
J'ai tenté quelque chose mais il me renvoi une erreur qui est la suivante :
FATAL EXCEPTION: main Process: morpheus.oniri, PID: 6696 java.lang.RuntimeException: Unable to start activity ComponentInfo{morpheus.oniri/morpheus.oniri.activities.afficherCarnetActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.isEmpty()' on a null object reference at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) at android.app.ActivityThread.access$800(ActivityThread.java:151) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5254) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.isEmpty()' on a null object reference at morpheus.oniri.activities.afficherCarnetActivity.getAllData(afficherCarnetActivity.java:113) at morpheus.oniri.activities.afficherCarnetActivity.onCreate(afficherCarnetActivity.java:107) at android.app.Activity.performCreate(Activity.java:5990) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) at android.app.ActivityThread.access$800(ActivityThread.java:151) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5254) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
J'ai effectué ceci pour récupérer les données sur ma nouvelle activité.
1 2 3 4
| Intent i = getIntent();
Carnet carnetP;
carnetP = i.getParcelableExtra("data");
notes = carnetP.getText(); |
Et pour les envoyer :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| public GroceryViewHolder(final View itemView) {
super(itemView);
dateItem = itemView.findViewById(R.id.date_item);
colorItem = itemView.findViewById(R.id.color_item);
textItem = itemView.findViewById(R.id.text_item);
lucidItem = itemView.findViewById(R.id.lucid_item);
itemView.setOnClickListener(this); //my itemView clik
}
@Override
public void onClick(View v) {
int pos = getAdapterPosition();
if(pos != RecyclerView.NO_POSITION){
Intent intent = new Intent(mContext, afficherCarnetActivity.class);
intent.putExtra("data", new Carnet());
mContext.startActivity(intent);
} |
Quand je fais un Log.d() je vois bien que la variable note est null mais quand je fais le log.d() sur mon "carnetP" j'obtiens un texte qui ressemble au chemin du package vers mon modele : "morpheus.oniri.model.Carnet@14dbb242". Ce n'est pas ce qui est dans ma base de données.
Mon modèle de données qui implémente "Parcelable" :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
| public class Carnet implements Parcelable {
public Carnet(){
}
private int id;
private String text;
private String userId;
private int color;
private String method;
private String date;
private int lucid;
protected Carnet(Parcel in) {
id = in.readInt();
text = in.readString();
userId = in.readString();
color = in.readInt();
method = in.readString();
date = in.readString();
lucid = in.readInt();
}
public static final Creator<Carnet> CREATOR = new Creator<Carnet>() {
@Override
public Carnet createFromParcel(Parcel in) {
return new Carnet(in);
}
@Override
public Carnet[] newArray(int size) {
return new Carnet[size];
}
};
public int getId(){
return id;
}
public void setId(int id){
this.id = id;
}
public String getText(){
return text;
}
public void setText(String text){
this.text = text;
}
public int getLucid(){
return lucid;
}
public void setLucid(int lucid){
this.lucid = lucid;
}
public void setMethod(String method){
this.method = method;
}
public String getMethod(){
return method;
}
public void setDate(String date){
this.date = date;
}
public String getDate(){
return date;
}
public void setColor(int color){
this.color = color;
}
public int getColor(){
return color;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(id);
dest.writeString(text);
dest.writeString(userId);
dest.writeInt(color);
dest.writeString(method);
dest.writeString(date);
dest.writeInt(lucid);
}
} |
Auriez vous une idée du problème ?
Partager