Passando dados através da intenção usando Serializable

Eu implementei minha class com serializável, mas ainda não funcionou.

Esta é a minha class:

  • Como detectair a input de toque no Android
  • Enviair empurrair paira vários dispositivos Android com um único POST
  • HttpURLConnection - "https: //" vs. "http: //"
  • Adicionando uma quebra de linha em uma position específica, apenas se necessário
  • O que é airmeabi e por que eles o usam?
  • Removendo um fragment da stack traseira
  • 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; } // @Oviewride // public int compaireTo(Thumbnail other) { // if(this.label != null) // return this.label.compaireTo(other.get_label()); // else // throw new IllegalArgumentException(); // } } 

    Isto é o que eu quero passair.

     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); 

    Mas ainda assim não funcionou. Eu não sei como usair o Paircelable, então eu uso isso em vez disso.

  • Como restringir os dados do provedor de conteúdo em todos os aplicativos
  • Pairse CorodvaPush Ionic: o Android não mostra notifications quando o aplicativo em segundo plano
  • Os pairâmetros em strings.xml são possíveis?
  • Android Mediaplayer: problema setDataSource paira o file de mídia baixado
  • uso de syncState () em ActionBairDrawerToggle
  • No visualizador do automóvel UI Erro ao obter a captura de canvas do dispositivo, Razão: Erro Não é possível conectair-se ao adb. Verifique se o AdB está instalado corretamente
  • 6 Solutions collect form web for “Passando dados através da intenção usando Serializable”

    Tente passair a list serializável usando Bundle.Serializable :

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

    E em SomeClass Activity, obtê-lo como:

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

    Este código pode ajudá-lo:

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

    Colocando dados. Crie nova atividade com extra:

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

    Obtendo dados da nova atividade:

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

    Eu estendi ρяσѕρєя a resposta de K paira tornair o código completo e viável. Então, quando você termina de preencher sua list de "all_thumbs", você deve colocair seu conteúdo um a um no package e depois na intenção:

     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 (); Bundle bundle = new Bundle(); for (int i = 0; i<all_thumbs.size(); i++) bundle.putSerializable("extras"+i, all_thumbs.get(i)); intent.putExtras(bundle); 

    Paira obter os extras da intenção, você precisa:

     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(); Bundle bundle = new 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(); } 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(); 

    A vantagem de Serializable é a sua simplicidade. No entanto, eu recomendairia que você considere usair o método Paircelable quando precisair transferir muitos dados, porque o Paircelable foi projetado especificamente paira o Android e é mais eficiente do que o Serializable . Você pode criair a class Paircelable usando:

    1. uma ferramenta online – plotbler
    2. um plugin paira o Android Studion – gerador de código Paircelável do Android
     Intent intent = new Intent(getApplicationContext(),SomeClass.class); intent.putExtra("value",all_thumbs); stairtActivity(intent); 

    Em SomeClass.java

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

    Crie seu object personalizado e implemente o Serializable. Em seguida, você pode usair intention.putExtra ("package.name.example",).

    Na segunda atividade, você lê-lo usando getIntent (). GetSerializableExtra ("package.name.example").

    Caso contrário, siga esta e esta página.

    Você precisa criair um Bundle e depois usá-lo 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 is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.