java.lang.ClassCastException:java.util.HashMap无法强制转换为com.Pau.ImapNotes.Miscs.OneNote
我正在尝试使用github中的以下代码。 我需要一些帮助,因为我不是java专家 在Listactivity.java中:java.lang.ClassCastException:java.util.HashMap无法强制转换为com.Pau.ImapNotes.Miscs.OneNote,java,android,casting,Java,Android,Casting,我正在尝试使用github中的以下代码。 我需要一些帮助,因为我不是java专家 在Listactivity.java中: Intent toDetail = new Intent(widget.getContext(), NoteDetailActivity.class); toDetail.putExtra("selectedNote", (OneNote)noteList.get(selectedNote)); startActivity(toDetail); this.currentN
Intent toDetail = new Intent(widget.getContext(), NoteDetailActivity.class);
toDetail.putExtra("selectedNote", (OneNote)noteList.get(selectedNote));
startActivity(toDetail);
this.currentNote = (OneNote)getIntent().getExtras().get("selectedNote");
在OneNote.java中:
public class OneNote extends HashMap<String,String>{
[...]
public OneNote(){
super();
this.put("title", "No Title");
this.put("body", "No Body");
this.put("date", "No Date");
}
public OneNote(String title, String body, String date){
super();
this.put("title", title);
this.put("body", body);
this.put("date", date);
}
[...]
在运行时,我收到以下消息:
E/AndroidRuntime( 8212): Caused by: java.lang.ClassCastException: java.util.HashMap cannot be cast to com.Pau.ImapNotes.Miscs.OneNote
E/AndroidRuntime( 8212): at com.Pau.ImapNotes.NoteDetailActivity.onCreate(NoteDetailActivity.java:21)
第21行是上面的那行最好使用Parcelable或Serializable to将对象发送到另一个活动。这就是他正在做的。HashMap是可序列化的,这意味着OneNote也是可序列化的。您的强制转换中可能缺少括号。我假设noteList是OneNotes的HashMap?如果是这种情况,那么问题可能是因为您正在铸造OneNoteList而不是OneNoteList.getselectedNote;正如小玉所问,我试过用括号,但都是一样的。如果我打印一张OneNoteList.getselectedNote,内容似乎是正确的。在NoteDetailActivity中,getIntent.getExtras.getselectedNote.getClass.getName表示它是HashMap