【问题标题】:How to pass an Arraylist of Events through an Intent如何通过 Intent 传递事件的 Arraylist
【发布时间】:2017-07-28 01:49:08
【问题描述】:

我正在尝试使用 Intent 将事件列表从一个 Activity 传递给另一个,这就是我尝试这样做的方式:

关于活动 1:

ArrayList<Event>  eventsSelected= new ArrayList();
eventsSelected.add(new Event(Color.RED, dateClicked.getTime(), "event1"));
eventsSelected.add(new Event(Color.RED, dateClicked.getTime(), "event2"));
eventsSelected.add(new Event(Color.RED, dateClicked.getTime(), "event3"));
Intent i = new Intent(FirstActivity.this, SecondActivity.class);
i.putExtra("eventsSelected", eventsSelected);
startActivity(i);

但我没有找到如何在第二个活动中获得它,我尝试过这种方式但它不起作用:

关于活动 2:

Intent intent = getIntent();
ArrayList<Event> selectedDates = intent.getStringArrayListExtra("eventsSelected");

【问题讨论】:

  • 实现可序列化到您的对象类
  • 我不清楚该怎么做!看到我是安卓新手,请你解释一下@JohnJoe
  • 试试Bundle data=getIntent().getExtras() ; ArrayList&lt;Event&gt; aaa= (ArrayList&lt;Event&gt;) data.get("eventsSelected");
  • 你应该把它放在答案部分而不是 cmets。 @jigarsavaliya

标签: android android-intent


【解决方案1】:

你需要为你的对象类实现 Serializable

public class Event implements  Serializable {
}

还有

i.putExtra("eventsSelected",eventsSelected);

【讨论】:

  • 我应该把它放在哪里?
  • 在你的 Event 类中
  • 我没有 Event 类
  • 为了清楚起见,我在那边使用日历,这就是我使用事件的目的
【解决方案2】:

只是为了澄清它是这样工作的

ArrayList<Event> eventsSelected = new ArrayList<Event>();
intent.putExtra("eventsSelected", eventsSelected);

在二等舱

ArrayList<Event> eventsSelected = (ArrayList<Event>) getIntent().getSerializableExtra("eventsSelected");

【讨论】:

    【解决方案3】:

    试试

    Bundle data=getIntent().getExtras() ;  
    ArrayList<Event> aaa= (ArrayList<Event>) data.get("eventsSelected");
    

    【讨论】:

      【解决方案4】:

      当您通过Intent 传递它时,您必须必须实现类 Parcelable 或 Serializable。 看看我的thisthis 答案。 希望对你有帮助!!

      【讨论】:

        猜你喜欢
        • 2011-07-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-24
        相关资源
        最近更新 更多