07-14 11:58:28.160: WARN/Intent(1911): Failure filling in extras
07-14 11:58:28.160: WARN/Intent(1911): java.lang.RuntimeException: Parcelable encounteredClassNotFoundException reading a Serializable object (name = ams.gelato.api.TaskScheduler$Task)
07-14 11:58:28.160: WARN/Intent(1911): at android.os.Parcel.readSerializable(Parcel.java:1890)
07-14 11:58:28.160: WARN/Intent(1911): at android.os.Parcel.readValue(Parcel.java:1761)
07-14 11:58:28.160: WARN/Intent(1911): at android.os.Parcel.readMapInternal(Parcel.java:1947)
07-14 11:58:28.160: WARN/Intent(1911): at android.os.Bundle.unparcel(Bundle.java:169)
07-14 11:58:28.160: WARN/Intent(1911): at android.os.Bundle.putAll(Bundle.java:242)
07-14 11:58:28.160: WARN/Intent(1911): at android.content.Intent.fillIn(Intent.java:4853)
07-14 11:58:28.160: WARN/Intent(1911): at com.android.server.am.PendingIntentRecord.sendInner(PendingIntentRecord.java:194)
07-14 11:58:28.160: WARN/Intent(1911): at com.android.server.am.PendingIntentRecord.send(PendingIntentRecord.java:176)
07-14 11:58:28.160: WARN/Intent(1911): at android.app.PendingIntent.send(PendingIntent.java:400)
07-14 11:58:28.160: WARN/Intent(1911): at com.android.server.AlarmManagerService$AlarmThread.run(AlarmManagerService.java:645)
07-14 11:58:28.160: WARN/Intent(1911): Caused by: java.lang.ClassNotFoundException: ams.gelato.api.TaskScheduler$Task
07-14 11:58:28.160: WARN/Intent(1911): at java.lang.Class.classForName(Native Method)
07-14 11:58:28.160: WARN/Intent(1911): at java.lang.Class.forName(Class.java:237)
07-14 11:58:28.160: WARN/Intent(1911): at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:2604)
07-14 11:58:28.160: WARN/Intent(1911): at java.io.ObjectInputStream.readNewClassDesc(ObjectInputStream.java:1860)
07-14 11:58:28.160: WARN/Intent(1911): at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:840)
07-14 11:58:28.160: WARN/Intent(1911): at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:2080)
07-14 11:58:28.160: WARN/Intent(1911): at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:943)
07-14 11:58:28.160: WARN/Intent(1911): at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2299)
07-14 11:58:28.160: WARN/Intent(1911): at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2254)
07-14 11:58:28.160: WARN/Intent(1911): at android.os.Parcel.readSerializable(Parcel.java:1884)
07-14 11:58:28.160: WARN/Intent(1911): ... 9 more
07-14 11:58:28.160: WARN/Intent(1911): Caused by: java.lang.NoClassDefFoundError: ams.gelato.api.TaskScheduler$Task
07-14 11:58:28.160: WARN/Intent(1911): ... 19 more
07-14 11:58:28.160: WARN/Intent(1911): Caused by: java.lang.ClassNotFoundException: ams.gelato.api.TaskScheduler$Task in loader dalvik.system.PathClassLoader@4001b4f8
07-14 11:58:28.160: WARN/Intent(1911): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243)
07-14 11:58:28.160: WARN/Intent(1911): at java.lang.ClassLoader.loadClass(ClassLoader.java:573)
07-14 11:58:28.160: WARN/Intent(1911): at java.lang.ClassLoader.loadClass(ClassLoader.java:532)
07-14 11:58:28.160: WARN/Intent(1911): ... 19 more
当尝试将我的可序列化对象传递给 Intent 时出现此异常
package ams.gelato.api;
imports...
...
public class TaskScheduler implements ITaskScheduler{
List<Task> tasks = new ArrayList<Task>();
Context context = null;
Intent intent= null;
AlarmManager am = null;
public TaskScheduler(Context c){
context = c;
intent = new Intent(context,TaskReceiver.class);
am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
}
@Override
public boolean RunTaskAtTime(ITask _task, Date time) {
Intent newIntent = new Intent(intent);
newIntent.putExtra("task", new Task(_task));
am.set(AlarmManager.RTC_WAKEUP, time.getTime(), PendingIntent.getBroadcast(context, 0, newIntent, PendingIntent.FLAG_UPDATE_CURRENT));
return true;
}
public static class Task implements ITask,Serializable{
ITask task;
public Task(ITask t){
task = t;
}
@Override
public void runTask(){
}
}
这是我的任务调度程序的源代码。有问题的链接是; newIntent.putExtra("task", new Task(_task));我不确定为什么会抛出这些异常,有人可以帮我吗?
最佳答案
如果你想传递一个 Task 对象,你必须做类似的事情
公共(public)类 Task 实现 Parcelable{ 这里...实现方法
看这个例子
http://blog.cluepusher.dk/2009/10/28/writing-parcelable-classes-for-android/
关于android - ClassNotFoundException异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6696449/