java.lang.ClassCastException:java.util.HashMap无法强制转换为com.Pau.ImapNotes.Miscs.OneNote

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

我正在尝试使用github中的以下代码。 我需要一些帮助,因为我不是java专家

在Listactivity.java中:

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