重新提出所有类似的问题,但没有结果。 我无法将一个从intentService实现parcelable的ojbect传递给Activity。将数据从活动传递到另一个活动时,相同的代码工作正常。甚至可以传递ParcelableArrayListExtra但不能传递可分割的Object。它是在我的项目中传递对象的一个要求。 代码如下(没有权利发布整个代码,整个代码工作除了这些行) 码: 的 IntentService:
Intent action = new Intent(this, QuizActivity.class);
intent.putParcelableArrayListExtra("userList",name);
Random position = new Random();
int randomPosition =position.nextInt(3);
intent.putExtra("selectedUser",name.get(randomPosition));
action.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
SecondActivity:
List<User> userList= getIntent().getParcelableArrayListExtra(EXTRA_INSECTS);
Insect selected = getIntent().getExtras().getParcelable("selectedUser");
答案 0 :(得分:0)
我认为问题可能是将API 25+上的自定义Parcelable从服务放到活动中。
此answer有一种解决方法,其形式是将Parcelable自己转换为/从字节[]。
首先传递单个Parcelable对象,而不是ArrayList。
public static void putExtra(Intent intent, String key, Parcelable parcelable) {
byte[] bytes = marshall(parcelable);
intent.putExtra(key, bytes);
}
和
public static <T> T getExtra(Intent intent, String key, Parcelable.Creator<T> creator) {
byte[] bytes = intent.getByteArrayExtra(key);
return ParcelableUtils.unmarshall(bytes, creator);
}
答案 1 :(得分:0)
尝试下面,当你得到getParcelableArrayListExtra时使用相同的名称。你必须使用Parcelable实现User类。
Intent action = new Intent(this, QuizActivity.class);
intent.putParcelableArrayListExtra("userList",name);
Random position = new Random();
int randomPosition =position.nextInt(3);
intent.putExtra("selectedUser",name.get(randomPosition));
action.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
在SecondActivity中:
ArrayList<User> userList = getIntent().getParcelableArrayListExtra("userList");
for(User user : post){
Log.d("user", user.getString());
}