【问题标题】:Android intent bundle pass stringAndroid Intent 包传递字符串
【发布时间】:2013-11-08 21:25:36
【问题描述】:

我有 json 到可序列化的 claas,然后我用它来填充 listview,一切正常,但我想用一个可序列化的对象在另一个 xml 页面上填充 textview,我读到最好的方法是捆绑意图,但我确实编码错了。

public class FeedItem implements Serializable {

    private String title;
    private String date;
    private String attachmentUrl;
    private String id;
    private String content;
    private String url;

    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 + "]";
    }

    ArrayList<FeedItem> all_thumbs = new ArrayList<FeedItem>();
    all_thumbs.add(new FeedItem(title);
    Intent intent = new Intent(title);

    Bundle extras = new Bundle();

    extras.putSerializable("title",title);
    intent.putExtras(extras);

}

在我想使用它的类中

public void updateList() {

    TextView infoz = (TextView) getView().findViewById(R.id.infoz);
    Bundle args;
    getArguments().getSerializable(title);

【问题讨论】:

  • 怎么了?你有什么例外吗?
  • 使用 Parcelable 而不是 Serializable:stackoverflow.com/questions/5550670/…
  • 在我想使用它的类上:标题无法解析为变量。在可序列化类中 此行的多个标记 - 标记“标题”上的语法错误,无效的 FormalParameterList - 标记上的语法错误,错位的构造 - 标记“标题”上的语法错误,此标记后预期的 VariableDeclaratorId此行有多个标记 - 标记“添加”上的语法错误,= 此标记之后的预期 - 标记上的语法错误,错误的构造

标签: java android textview bundle populate


【解决方案1】:

改为使用:

public void updateList() {

    TextView infoz = (TextView) getView().findViewById(R.id.infoz);
    Intent intent = getIntent();
    Bundle extras = intent.getExtras();
    String title = (String) extras.getSerializable("title");

【讨论】:

  • 以及如何正确地将其设置为 Serializable?
  • 你想完成什么。您是否尝试将整个 FeedItem 类从父活动传递到其片段?
【解决方案2】:

如果您想传递任何原始数据类型值(String、int、long、float 等),则不需要使用 Bundle.putExtra(KEY,Serialized Object) 和 Bundle.getSerializable(KEY)。你可以使用 Bundle.putExtra(KEY,primitive data);

如果您想将类对象传递给意图/捆绑,那么您需要在该类中实现 Serializable/Parsable,例如:

public class Test implements Serializable
{
   private static final long serialVersionUID = 1L;
   int test1;
} 

然后您可以将该对象实例传递给意图,例如:

myIntent.putExtra( KEY, new Test() );

更多说明请查看pass seriable object in intent example

【讨论】:

  • **在 feeditem 可序列化类中 **public void save(){ Intent i = new Intent(); i.putExtra(标题,标题); } ** 片段类 ** Intent 意图 = getActivity().getIntent();捆绑附加服务 = intent.getExtras(); String title = (String) extras.getSerializable("title"); infoz.setText(title);但是应用程序强制关闭,为什么?
  • 你只需要写 i.putExtra("title", title) 而不是 i.putExtra(title, title);
猜你喜欢
  • 2023-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多