【问题标题】:How to pass Spanned Data-type data using Intent如何使用 Intent 传递跨区数据类型的数据
【发布时间】:2017-08-11 14:07:25
【问题描述】:

我正在将一些数据从一个活动传递到另一个活动。所有数据都正常传递,但有一个数据类型为 Spanned 的数据根本不起作用。 当我在第一个 Activity 中显示它时,它可以工作,但是当我在另一个 Activity 中显示它时,它甚至不会出现。

我是这样从 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);
            }
        });

在其他活动中,我收到了这样的数据

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

我需要找人来找出错误。 :) 帮帮我

【问题讨论】:

    标签: android android-intent baseadapter spanned


    【解决方案1】:

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

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

    【讨论】:

    • 非常感谢。它醒了。但是有没有办法解决丢失跨度的问题。
    • @A-Majeed:如果您将CharSequence 放入具有跨度的额外内容中,并通过getCharSequenceExtra() 检索它,则它不应丢失跨度。
    • 好的。那太棒了。现在我知道了。我现在需要使 textview 可滚动才能看到下面的文本。再次感谢您。
    • @CommonsWare:我正在实施您的建议,但在另一端获得了 CharSequence 的链接剥离版本:stackoverflow.com/questions/50016940
    猜你喜欢
    • 1970-01-01
    • 2013-01-13
    • 1970-01-01
    • 2012-12-29
    • 1970-01-01
    • 1970-01-01
    • 2011-07-24
    • 2019-10-20
    • 2021-07-12
    相关资源
    最近更新 更多