-2

首先我必须提到我是 Android 和 Java 的新手。我编写了一个 json http 对象,该对象填充 Serializable 类,并从中填充列表视图,一切正常,但现在我尝试使用来自 Serializable 类的一个字符串填充不同 xml 布局上的文本视图。

可序列化类

    public class FeedItem   implements Serializable {

    private static final long serialVersionUID = 1L;
     private int test1;
    private String title;
    private String date;
    private String attachmentUrl;
    private String id;
    private String content;
    private String url;
    private String tiitle = "sfsf";




    public String getUrl() {
            return url;
    }

    public void setUrl(String url) {
            this.url = url;
    }

    public String getContent() {
            return content;
    }

    public void setContent(String content) {
            this.content = content;
    }

    public String getId() {
            return id;
    }

    public void setId(String id) {
            this.id = id;
    }

    public String getTitle() {
            return title;
    }

    public void setTitle(String title) {
            this.title = title;
    }

    public String getDate() {
            return date;
    }

    public void setDate(String date) {
            this.date = date;
    }

    public String getAttachmentUrl() {
            return attachmentUrl;
    }

    public void setAttachmentUrl(String attachmentUrl) {
            this.attachmentUrl = attachmentUrl;
    }

    @Override
    public String toString() {
            return "[ title=" + title + ", date=" + date + "]";



    }


      public void save(){
FeedItem feed = new FeedItem();

 Intent intent =  new Intent();
 Bundle extras = new Bundle();
    intent.putExtra("title", feed);

以及我要填充文本视图的片段类

public void UpdateList(){
  TextView infoz = (TextView) getView().findViewById(R.id.infoz);
      Intent intent = getActivity().getIntent();
        Bundle extras = intent.getExtras();
        String title = (String) getActivity().getIntent().getSerializableExtra("title");
        Toast.makeText(getActivity(), title, Toast.LENGTH_LONG).show(); 

}

吐司是空的。

4

2 回答 2

0

您在 Bundle 中放置了一个 Serializable 对象(在 Eclipse 中,将鼠标移到方法名称上方应该会显示签名,在您的情况下将是 putExtra(String name, Serializable extra))。要检索标题字符串,您应该首先检索 FeedItem 对象,然后从中获取字符串,如下所示:

intent.putExtra("title", feed);

String title = ((FeedItem)getActivity().getIntent().getSerializableExtra("title")).getTitle();

或者,如果您只需要这样,您可以将标题放在额外的部分中,使用

intent.putExtra("title", feed.getTitle()); 

然后得到这样的标题:

String title = getActivity().getIntent().getStringExtra("title");
于 2013-11-08T16:26:18.833 回答
0

这是您用来从意图中获取标题的代码:

String title = (String) getActivity().getIntent().getSerializableExtra("title");

这将提取带有键“title”的额外内容并反序列化它,但是您随后将其转换为String. 您没有将 aString放入 extrasBundle中,而是在其中放入了一个FeedItem对象。你需要这样做:

FeedItem feedItem = (FeedItem)getActivity().getIntent().getSerializableExtra("title");
String title = feedItem.getTitle();

此外,您发布的这段代码:

public void save(){
    FeedItem feed = new FeedItem();
    Intent intent =  new Intent();
    Bundle extras = new Bundle();
    intent.putExtra("title", feed);

没有意义。首先,您创建一个新的FeedItem. 这个新实例将有一个空的title. 其次,您创建了一个Bundle被调用extras但什么也不做的事情。第三,您确定Intent您发送的内容中确实有您想要的对象吗?使用调试器或调试日志记录检查这一点。

于 2013-11-08T16:54:01.033 回答