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();
}
吐司是空的。
答案 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
实际上在附加内容中有你想要的对象吗?请使用调试器或调试日志记录进行检查。