2017-08-11 4 views
0

Je transmets des données d'une activité à une autre. Toutes les données passent bien mais il y en a une avec le type de données Spanned qui ne fonctionne pas du tout. Lorsque je l'affiche dans la première activité, cela fonctionne mais quand je l'affiche dans l'autre activité, il n'apparaît même pas.Comment faire passer des données de type Données spannées à l'aide de l'intention

Je pris les données de JSON comme celui-ci

public void parseJsonData(final String jsonString) { 

    try { 
     jArray = new JSONArray(jsonString); 

     for(int i=0; i < jArray.length(); i++) { 

      JSONObject jObject = jArray.getJSONObject(i); 
      news news1 = new news(); 
      news1.setCategory("Spor"); 
      news1.setTitle(jObject.getString("title")); 
      news1.setDate(jObject.getString("date")); 
      news1.setContent(Html.fromHtml(jObject.getString("content")));//Here the data type of Content is Spanned 
      news1.setShort_content(jObject.getString("short_content")); 
      Sdatalist.add(news1); 

     } 

     if (dialog.isShowing()){ 
      dialog.dismiss(); 
     } 
    } catch (JSONException e) { 
     e.printStackTrace(); 
     dialog.dismiss(); 
    } 
} 

De mon adaptateur envoyé les données comme celui-ci

myholder.myimageview1.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Intent myIntent = new Intent(mycontext, Detailews.class); 
       myIntent.putExtra("category", mydatalist.get(position).getCategory()); 
       myIntent.putExtra("title", mydatalist.get(position).getTitle()); 
       myIntent.putExtra("date", mydatalist.get(position).getDate()); 
       myIntent.putExtra("cont", mydatalist.get(position).getContent()); 
       myIntent.putExtra("image", mydatalist.get(position).getImage()); 
       mycontext.startActivity(myIntent); 
      } 
     }); 

Et j'ai reçu les données comme celui-ci

cat = (TextView)findViewById(R.id.Dtextcategory); 
    dat = (TextView)findViewById(R.id.Ddatetext); 
    tit = (TextView)findViewById(R.id.Dtitletext); 
    con = (TextView)findViewById(R.id.textView4); 

    Intent in = getIntent(); 
    final String image_url = in.getStringExtra("image"); 
    final String title = in.getStringExtra("title"); 
    final String date = in.getStringExtra("date"); 
    final String co = in.getStringExtra("cont");//If I try making the datatype here spanned,it wont understand :) 
    final String category = in.getStringExtra("category"); 

    cat.setText(category); 
    dat.setText(date); 
    tit.setText(title); 
    con.setText(co); //Here is where it does not show. 

    imageView = (ImageView)findViewById(R.id.Dimage); 
    new CustomAdapter.DownloadImageTask(imageView).execute(image_url); 
dans l'autre activité

J'ai besoin de quelqu'un pour trouver le bug. :) aidez-moi

Répondre

0

getContent() aurait besoin de retourner un CharSequence. Ensuite, utilisez getCharSequenceExtra(), pas getStringExtra(), en l'enregistrant dans une variable CharSequence.

IOW, les chaînes n'ont pas de portée. CharSequence Les objets ont des portées. Lorsque vous convertissez un CharSequence en une chaîne via toString(), vous perdez les travées.

+0

Merci beaucoup. Il s'est réveillé. Mais existe-t-il un moyen de résoudre le problème de la perte des travées? –

+0

@ A-Majeed: Si vous mettez un 'CharSequence' dans un extra qui a des spans, et que vous le récupérez via' getCharSequenceExtra() ', il ne devrait pas perdre les spans. – CommonsWare

+0

Okay. C'était excellent. Maintenant j'ai compris. Je dois maintenant faire défiler le texte pour voir le texte ci-dessous. Merci une fois de plus. –