Android意图额外填充

时间:2013-11-08 16:17:32

标签: java android serialization

Fisrt我必须提到我是Android和Java的新手。我编写了一个填充Serializable类的json http对象,并从中填充listviews,一切正常,但现在我正在尝试使用Serializable类中的一个字符串填充不同xml布局的textview。

可序列化的类

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

和我要填充textview的片段类

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

}

吐司是空的。

2 个答案:

答案 0 :(得分:0)

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

intent.putExtra("title", feed);

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

或者,您可以使用

将标题添加到额外内容中,如果这就是您所需的全部内容
intent.putExtra("title", feed.getTitle()); 

然后得到这样的标题:

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

答案 1 :(得分:0)

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

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

这将使用键“title”提取额外值并对其进行反序列化,但是您将其转换为String。您没有将String放入附加内容Bundle,而是在其中放置了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的{​​{1}},但不对其执行任何操作。第三,你确定你发送的extras实际上在附加内容中有你想要的对象吗?请使用调试器或调试日志记录进行检查。