2017-08-11 75 views
0

我将一些数据从一个活动传递给另一个。所有的数据都可以正常传递,但是那里有一个Spanned数据类型,它根本不工作。 当我将它显示在第一个活动中时,它可以工作,但是当我在其他活动中显示它时,它甚至会出现。如何使用意图传递Spanned数据类型数据

我把数据从JSON这样

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

从我的适配器我发送的数据是这样

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

而在其他活动我收到这样的

​​数据

我需要一个人来找到这个bug。 :)帮我出

回答

0

getContent()需要返回CharSequence。然后,使用getCharSequenceExtra()而不是getStringExtra(),将其保存为CharSequence变量。

IOW,字符串没有跨度。 CharSequence对象有跨度。当您通过toString()CharSequence转换为字符串时,会丢失跨度。

+0

非常感谢。它醒了。但是有没有办法解决跨度损失的问题。 –

+0

@ A-Majeed:如果你将一个CharSequence放入一个跨越的额外部分,并且通过'getCharSequenceExtra()'检索它,它就不会失去这个跨度。 – CommonsWare

+0

好吧。那很好。现在我懂了。我现在需要使textview可滚动才能看到下面的文本。再一次感谢你。 –