将数组传递给活动(Android)

时间:2013-07-31 10:12:26

标签: java android android-intent converter

在活动A中,我构建了一个问题的数组q1,我传递给活动B:

Intent i = new Intent(getApplicationContext(), B.class);
i.putExtra("questions", q1);
startActivity(i);
finish();

在活动B中:

Object c= getIntent().getExtras().getSerializable("questions");

现在,如何在一系列问题中重新转换“c”?我无法进行演员表(问题[])

4 个答案:

答案 0 :(得分:2)

这会有所帮助。

 Question[] questions = (Question)context.getIntent().getExtras().get(key)

答案 1 :(得分:0)

您的对象需要实现Parcelable界面。

在您的Question类中必须实现parcelable接口。请参阅以下代码

Question[] questions = //assign value;
Parcelable[] output = new Parcelable[questions.length];
for (int i=questions.length-1; i>=0; --i) {
    output[i] = questions[i];
}

Intent i = new Intent(...);
i.putExtra("QuestionArray", output);

//从意图中撤回

Question[] questions = (Question[])intent.getParcelableArrayExtra("QuestionArray");

答案 2 :(得分:0)

在第一个活动中,您可以在一个包内发送数组,然后在下一个使用意图创建的活动中,您可以从包中提取数组列表。

        Bundle b=new Bundle();
        b.putStringArrayList("option", optionMod);
        Intent i = new Intent(getApplicationContext(), ad45.hw.hwapp.confirmation.class);
        i.putExtras(b);
        startActivity(i); 

然后,当您想要读取新活动中的内容时,创建一个新的数组列表以存储随意图一起发送的数组并从数据包中提取数组:

    public void getInfo(){
    Bundle extras = getIntent().getExtras();
    if (extras != null) {
       options = extras.getStringArrayList("option"); 
     }
    }

答案 3 :(得分:0)

您的Question对象必须实现Parcelable接口。您只能放置实现Parcelable的原始对象或对象。