【发布时间】:2015-09-22 11:58:36
【问题描述】:
在一个 android 应用程序中,我试图将一个可序列化的对象数组从一个片段发送到一个活动。但是当我在活动中反序列化时,它会不断显示类转换异常。
这是寻呼机适配器的代码,其中在图像视图上单击尝试打开活动。
public class ItemImageSliderAdapter extends PagerAdapter {
Context _context;
Images[] images;
public ItemImageSliderAdapter(Context _context, Images[] images) {
this._context = _context;
this.images = images;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
((ViewPager) container).removeView((ImageView) object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
ImageView imageView = new ImageView(_context);
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
Picasso.with(_context).load(images[position].getMain()).into(imageView);
imageView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (images != null) {
fullImageSlider(v, images);
}
}
});
((ViewPager) container).addView(imageView, 0);
return imageView;
}
@Override
public int getCount() {
return images.length;
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == ((ImageView) arg1);
}
public void fullImageSlider(View v, Images[] imageArray) {
Intent intent = new Intent(v.getContext(), FullScreenImageSlider.class);
Bundle bundle = new Bundle();
bundle.putSerializable("data",imageArray);
bundle.putString("flag", "hello");
intent.putExtras(bundle);
v.getContext().startActivity(intent);
}
}
这是我试图从片段中获取反序列化数据的活动代码
public class FullScreenImageSlider extends Activity {
Images[] images = null;
String flag;
SmartViewPager slidePager;
CirclePageIndicator pageIndicator;
ItemImageSliderAdapter slideAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getIntent().getExtras().getSerializable("data") != null) {
flag = getIntent().getExtras().getString("flag");
try {
images = (Images[]) getIntent().getExtras().getSerializable(
"data");
} catch (ClassCastException e) {
Log.d("ex", "class cast exception");
}
}
setContentView(R.layout.full_screen_slider);
Log.d("flag", flag);
findViews();
}
private void findViews() {
slidePager = (SmartViewPager) findViewById(R.id.vp_slider);
pageIndicator = (CirclePageIndicator) findViewById(R.id.dots);
/*
* slideAdapter = new ItemImageSliderAdapter(this, images);
* slidePager.setAdapter(slideAdapter);
* pageIndicator.setViewPager(slidePager);
*/
}
}
这是我用来序列化的模型类的代码。
public class Images implements Serializable{
private String id;
private String isdefault;
private String thumb;
private String main;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getIsdefault() {
return isdefault;
}
public void setIsdefault(String isdefault) {
this.isdefault = isdefault;
}
public String getThumb() {
return thumb;
}
public void setThumb(String thumb) {
this.thumb = thumb;
}
public String getMain() {
return main;
}
public void setMain(String main) {
this.main = main;
}
@Override
public String toString() {
return "ClassPojo [id = " + id + ", isdefault = " + isdefault
+ ", thumb = " + thumb + ", main = " + main + "]";
}
}
【问题讨论】:
标签: java android android-intent serialization