【问题标题】:creating array list and passing it from one activity to another创建数组列表并将其从一个活动传递到另一个活动
【发布时间】:2011-08-05 10:57:21
【问题描述】:

我是一名学生,刚接触编程。这可能是一个简单的错误,谁能帮我修复它。我必须将一个数组列表从一个活动传递到另一个活动。在这个活动中,我有 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]);

你能告诉我为什么吗? 提前致谢

【问题讨论】:

  • 看看这个链接可能会有所帮助...stackoverflow.com/questions/6355787/…
  • 对于您的 NullPointerException 问题,Array 变量可能为 null,如果您没有从上一个活动中正确传递它,就会发生这种情况。在String[] Array = ... 之后使用日志语句仔细检查这一点,例如Log.v(LOG_TAG, "Array is null? " + (Array[i] == null));
  • 哦!您不能将ArrayList&lt;String&gt; 传递给myIntent.putExtra()。您需要先将ArrayList 转换为String[]。试试putExtra((String[])arr.toArray());

标签: android arraylist


【解决方案1】:

首先,一些约定:变量的开头名称小写,所以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);

【讨论】:

    【解决方案2】:

    像这样使用捆绑包:

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

    【讨论】:

    • 非常感谢您的帮助。真的很感激。恐怕它不能帮助我解决 java.lang.NullPointerException 错误。你能帮我解决这个错误吗?
    • 您是否仍然收到 java.lang.NullPointerException 错误..说明您在哪里得到它......
    • 请看问题的最后一部分..同一点..在for循环中..你能告诉我如果我将arraylist传递给第二个活动而不使用bundle会有什么不同吗,就像我最初那样使用意图......
    猜你喜欢
    • 2013-07-17
    • 2012-07-05
    • 2015-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多