android开发分享使用Serializable传递数据

我已经实现了我的类与可序列化,但它仍然无法正常工作。

这是我的class级:

package com.ursabyte.thumbnail; import java.io.Serializable; import android.graphics.Bitmap; public class Thumbnail implements Serializable { private static final long serialVersionUID = 1L; private String label = ""; private Bitmap bitmap; public Thumbnail(String label, Bitmap bitmap) { this.label = label; this.bitmap = bitmap; } public void set_label(String label) { this.label = label; } public String get_label() { return this.label; } public void set_bitmap(Bitmap bitmap) { this.bitmap = bitmap; } public Bitmap get_bitmap(){ return this.bitmap; } // @Override // public int compareTo(Thumbnail other) { // if(this.label != null) // return this.label.compareTo(other.get_label()); // else // throw new IllegalArgumentException(); // } } 

这是我想要传递的。

 List<Thumbnail> all_thumbs = new ArrayList<Thumbnail>(); all_thumbs.add(new Thumbnail(string, bitmap)); Intent intent = new Intent(getApplicationContext(), SomeClass.class); intent.putExtra("value", all_thumbs); 

但仍然没有奏效。 我不知道如何使用Parcelable,所以我用这个来代替。

    尝试使用Bundle.Serializable来传递可序列化的列表:

     Bundle bundle = new Bundle(); bundle.putSerializable("value", all_thumbs); intent.putExtras(bundle); 

    并在SomeClass活动得到它:

     Intent intent = this.getIntent(); Bundle bundle = intent.getExtras(); List<Thumbnail> thumbs= (List<Thumbnail>)bundle.getSerializable("value"); 

    此代码可以帮助您:

     public class EN implements Serializable { //... you don't need implement any methods when you implements Serializable } 

    把数据。 用额外创build新的活动:

     EN enumb = new EN(); Intent intent = new Intent(getActivity(), NewActivity.class); intent.putExtra("en", enumb); //second param is Serializable startActivity(intent); 

    从新活动中获取数据

     public class NewActivity extends Activity { private EN en; @Override public void onCreate(Bundle savedInstanceState) { try { super.onCreate(savedInstanceState); Bundle extras = getIntent().getExtras(); if (extras != null) { en = (EN)getIntent().getSerializableExtra("en"); //Obtaining data } //... 

    我扩展了K的答案,使其充分和可行的代码。 所以,当你填写你的“all_thumbs”列表时,你应该把它的内容一个接一个地放入这个包中,

     Bundle bundle = new Bundle(); for (int i = 0; i<all_thumbs.size(); i++) bundle.putSerializable("extras"+i, all_thumbs.get(i)); intent.putExtras(bundle); 

    为了从意图获得额外的,你需要:

     Bundle bundle = new Bundle(); List<Thumbnail> thumbnailObjects = new ArrayList<Thumbnail>(); // collect your Thumbnail objects for (String key : bundle.keySet()) { thumbnailObjects.add((Thumbnail) bundle.getSerializable(key)); } // for example, in order to get a value of the 3-rd object you need to: String label = thumbnailObjects.get(2).get_label(); 

    Serializable优点是它的简单性。 不过,我build议你在需要传输多个数据时考虑使用Parcelable方法,因为Parcelable是专门为Androiddevise的,比Serializable更有效率。 您可以使用以下命令创buildParcelable类:

     Intent intent = new Intent(getApplicationContext(),SomeClass.class); intent.putExtra("value",all_thumbs); startActivity(intent); 

    在SomeClass.java中

     Bundle b = getIntent().getExtras(); if(b != null) thumbs = (List<Thumbnail>) b.getSerializable("value"); 

    创build你的自定义对象并实现Serializable。 接下来,你可以使用intent.putExtra(“package.name.example”)。

    在第二个活动中,使用getIntent()。getSerializableExtra(“package.name.example”)来读取它。

    否则,请按照这个和这个页面。

    你需要创build一个Bundle ,然后在其上使用putSerializable :

     List<Thumbnail> all_thumbs = new ArrayList<Thumbnail>(); all_thumbs.add(new Thumbnail(string,bitmap)); Intent intent = new Intent(getApplicationContext(),SomeClass.class); Bundle extras = new Bundle(); extras.putSerializable("value",all_thumbs); intent.putExtras(extras); 

      以上就是android开发分享使用Serializable传递数据相关内容,想了解更多android开发(异常处理)及android游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/addevelopment/523397.html

      (0)
      上一篇 2020年12月11日
      下一篇 2020年12月11日

      精彩推荐