我有一段代码,我正在使用Android App。我正在尝试一些事情,所以我有一些非常脏(I.E.没有很好的封装,但工作)测试。问题是我最近尝试包括一个创建模型对象的测试。但是,为了与Android活动很好地配合,我正在实现Parcelable。因此,当我尝试运行测试时,我看到......
引起:java.lang.ClassNotFoundException:android.os.Parcelable 在java.net.URLClassLoader $ 1.run(URLClassLoader.java:359) 在java.net.URLClassLoader $ 1.run(URLClassLoader.java:348) at java.security.AccessController.doPrivileged(Native Method) 在java.net.URLClassLoader.findClass(URLClassLoader.java:347) at java.lang.ClassLoader.loadClass(ClassLoader.java:423) at sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:356) ......还有38个
我尝试将以下文件夹添加到我的类路径中(在Eclipse中的调试配置下)
ADT/sdk/platforms/android-10/data/android/os
但我仍然得到错误。如果没有创建一个完整的大包来在实际设备上运行,那么我可以使用jar或其他东西让它工作吗?
答案 0 :(得分:0)
这就是我提出的将Parcelable与模型类分开的原因。这是一个例子......
package com.gleason.apahelper.model.parcelable;
import java.util.ArrayList; import java.util.List;
import com.gleason.apahelper.model.Team;
导入android.os.Parcel; import android.os.Parcelable;
public class TeamParcel implements Parcelable{
private Team team;
public static TeamParcel[] getParcelable(List<Team> teams){
TeamParcel[] parcel = new TeamParcel[teams.size()];
for(int i = 0 ; i < teams.size(); i++){
parcel[i] = new TeamParcel();
parcel[i].team = teams.get(i);
}
return parcel;
}
public static List<Team> getTeams(TeamParcel[] parcels){
List<Team> list = new ArrayList<Team>();
for(TeamParcel parcel : parcels){
list.add(parcel.team);
}
return list;
}
public TeamParcel(){
}
public TeamParcel(Parcel in){
String[] data = new String[2];
in.readStringArray(data);
team = new Team();
team.setTeamId(Integer.parseInt(data[0]));
team.setTeamName(data[1]);
}
@Override
public int describeContents() {
// TODO Auto-generated method stub
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeStringArray(new String[] {String.valueOf(team.getTeamId()),
team.getTeamName()});
}
public static final Parcelable.Creator<TeamParcel> CREATOR = new Parcelable.Creator<TeamParcel>() {
public TeamParcel createFromParcel(Parcel in) {
return new TeamParcel(in);
}
public TeamParcel[] newArray(int size) {
return new TeamParcel[size];
}
};
}
我还没有完全测试过,所以我不接受这个答案,但似乎有效。我很乐意接受更好(或更好解释)的答案。