创建数组列表并将其从一个活动传递到另一个活动

时间:2011-08-05 10:57:21

标签: android arraylist

我是一名学生,也是编程新手。这可能是一个简单的错误,任何人都可以帮我解决它。我必须将数组列表从一个活动传递到另一个活动。在这个活动中我有5个单选按钮RB1,RB2 ....我想将news []的内容传递给另一个名为display的活动。

public void onClick(View v) {
        String[] news;
        news = new String[5];

        news[0] = "bbc";
        news[1] = "guardian";
        news[2] = "yahoo";
        news[3] = "sky";
        news[4] = "fox news";

        final ArrayList<String> arr = new ArrayList<String>();
        if (RB1.isChecked() == true)
            arr.add(news[0]);
        if (RB2.isChecked() == true)
             arr.add(news[1]);
        if (RB3.isChecked() == true)
            arr.add(news[2]);
        if (RB4.isChecked() == true)
            arr.add(news[3]);
        if (RB5.isChecked() == true)
            arr.add(news[4]);
if (v == Done)
        {
            Button done = (Button) findViewById(R.id.DONE);
            done.setOnClickListener(new View.OnClickListener() {
                public void onClick(View view)
                {
                    Intent myIntent = new Intent(Read.this, display.class);
                    myIntent.putExtra("pass",arr);
                    startActivity(myIntent);
                }
            });
        }

下一个活动的代码如下

                    Intent myintent = getIntent();
        String[] Array = myintent.getStringArrayExtra("pass");

        for (int i = 0; i < Array.length; i++)
            Log.v(LOG_TAG, "THE website Is :" +Array[i]);

我在上面的两行中提出了一个java.lang.NullPointerException,即

for (int i = 0; i < Array.length; i++)
                Log.v(LOG_TAG, "THE website Is :" +Array[i]);
你可以告诉我为什么吗? 提前谢谢

2 个答案:

答案 0 :(得分:2)

首先,一些约定:将变量的名称设置为小写,因此array而不是Array。这样可以避免以后的混乱。

this主题:

尝试如下
Bundle b=new Bundle();
b.putStringArray(key, new String[]{value1, value2});
Intent i=new Intent(context, Class);
i.putExtras(b);

Bundle b=this.getIntent().getExtras();
String[] array=b.getStringArray(key);

答案 1 :(得分:1)

像这样使用Bundle:

Bundle bundle = new Bundle();
bundle.putStringArray(key, news);
myIntent.putExtra("pass",bundle);
startActivity(myIntent);